components: schemas: Account: description: Account properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string id: description: The *primary identifier* of the `Account`. example: QWNjb3VudDo0Mg== readOnly: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - metro_area_network_presence - name - id title: Account type: object AccountPatch: description: Account Update properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string id: description: The *primary identifier* of the `Account Update`. example: QWNjb3VudFBhdGNoOjQy readOnly: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string title: AccountPatch type: object AccountRequest: description: Account Request properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string id: description: The *primary identifier* of the `Account Request`. example: QWNjb3VudFJlcXVlc3Q6NDI= readOnly: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: default: [] description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string required: - address - name - id title: AccountRequest type: object AccountUpdate: description: Account Update properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string id: description: The *primary identifier* of the `Account Update`. example: QWNjb3VudFVwZGF0ZTo0Mg== readOnly: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string required: - address - metro_area_network_presence - name - id title: AccountUpdate type: object Address: description: A postal address. *(Sensitive Property)* properties: country: description: ISO 3166-1 alpha-2 country code, for example DE example: US maxLength: 2 type: string locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 40 type: string post_office_box_number: description: The post office box number for PO box addresses. example: '2335232' maxLength: 80 nullable: true type: string postal_code: description: A postal code. For example, 9404 example: '9409' maxLength: 24 type: string region: description: The region. For example, CA example: CA maxLength: 80 nullable: true type: string street_address: description: The street address. For example, 1600 Amphitheatre Pkwy. example: 1600 Amphitheatre Pkwy. maxLength: 80 type: string required: - street_address - postal_code - locality - country title: Address type: object Aggregate: description: Mapping of Aggregated Statistics properties: aggregates: additionalProperties: $ref: '#/components/schemas/AggregateStatistics' description: 'Aggregated statistics for a connection or service configuration. For the **property name** the string representation of the aggregate interval in ISO8601 period notation is recommended. For example: `PT5M`, `P1D`, `P30D`,`P1Y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: &id001 P30D: accuracy: 0.95 average_ops_in: 1734882240 average_ops_out: 173220 average_pps_in: 1730224 average_pps_out: 17456 created_at: '2019-08-24T14:15:22Z' next_update_at: '2019-08-24T14:15:22Z' title: 30 Days PT5M: accuracy: 1.0 average_ops_in: 1734882240 average_ops_out: 173220 average_pps_in: 1730224 average_pps_out: 17456 created_at: '2019-08-24T14:15:22Z' next_update_at: '2019-08-24T14:15:22Z' title: 5 Minutes type: object required: - aggregates title: Aggregate type: object AggregateStatistics: description: Statistics properties: accuracy: description: 'The accuracy is the ratio of *total aggregated samples* to *expected samples*. The expected number of samples is the size of the window of the aggregate, divided by the aggregation resolution. For example: A window of `24 h` with an aggregation resolution of `5 m` would yield `288` samples. If only `275` samples are available for aggregation, the accuracy would be `0.95`. ' example: 0.95 maximum: 1.0 minimum: 0.0 type: number average_dps_in: description: 'Average **discards per second** inbound. ' example: 0.01 minimum: 0 type: number average_dps_out: description: 'Averages **discards per second** outbound. ' example: 0.12 minimum: 0 type: number average_eps_in: description: 'Average **errors per second** inbound. ' example: 0.32 minimum: 0 type: number average_eps_out: description: 'Averages **errors per second** outbound. ' example: 0.01 minimum: 0 type: number average_ops_in: description: 'Average inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer average_ops_out: description: 'Average outbound **octets per second**. ' example: 173220 minimum: 0 type: integer average_pps_in: description: 'Average number of inbound **packets per second**. ' example: 1730224 minimum: 0 type: integer average_pps_out: description: 'Average number outbound **packets per second**. ' example: 17456 minimum: 0 type: integer created_at: description: Timestamp when the statistics were created. format: date-time type: string end: description: End of the traffic aggregation. format: date-time type: string maximum_in_at: description: Timestamp when the inbound peak occured. format: date-time type: string maximum_ops_in: description: 'Peak inbound **octets per second** during the interval. ' example: 5734882240 minimum: 0 type: integer maximum_ops_out: description: 'Peak outbound **octets per second** during the interval. ' example: 473220 minimum: 0 type: integer maximum_out_at: description: Timestamp when the outbound peak occured. format: date-time type: string maximum_pps_in: description: 'Peak inbound **packets per second** during the interval. ' example: 1730224 minimum: 0 type: integer maximum_pps_out: description: 'Peak outbound **packets per second** during the interval. ' example: 17456 minimum: 0 type: integer next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string percentile95_ops_out: description: '95th percentile of outbound **octets per second**. ' example: 173220 minimum: 0 type: integer percentile95_pps_in: description: '95th percentile of the inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer percentile95_pps_out: description: '95th percentile of outbound **packets per second**. ' example: 17456 minimum: 0 type: integer start: description: Start of the traffic aggregation. format: date-time type: string title: description: 'Title of the aggregated statistics. ' example: 30 Days type: string required: - average_ops_out - average_ops_in - average_pps_out - average_pps_in - next_update_at - created_at - accuracy - end - start - title title: AggregateStatistics type: object AggregateTimeseries: description: Aggregated Statistics Timeseries properties: created_at: description: Timestamp when the statistics were created. format: date-time type: string fields: description: 'The fields used in the samples. They can be explicitly selected using the `fields` query parameter. The `timestamp` is always included. ' example: - timestamp - average_pps_in - average_pps_out - average_ops_in - average_ops_out items: type: string type: array next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string origin_timezone: description: 'The timezone where the data was collected in tz database format. ' example: Europe/Amsterdam type: string precision: description: 'Precision indicates the sampling rate of the aggregated traffic data in seconds. For example if the data is aggregated over 5 minutes, the precision would be 300. ' example: 300 minimum: 0 type: integer samples: description: 'A list of timeseries samples, where samples are n-tuples, where the first element is a timestamp. * `timestamp` (DateTime, `string`, ISO 8601, Example: `"2001-10-23T23:42:10Z"`) The other fields can be selected in the `fields` query from the aggregates. Default fields are: * `average_pps_in` (`integer`) * `average_pps_out` (`integer`) * `average_ops_in` (`integer`) * `average_ops_out` (`integer`) Missing values in the timeseries are represented by `null`.' items: example: - '2019-08-24T14:15:22Z' - 120302 - 42980203 - 320302 - 84990203 items: {} minItems: 1 type: array type: array title: description: 'Title of the timeseries. ' example: 5 Minutes type: string required: - samples - fields - origin_timezone - next_update_at - created_at - precision - title title: AggregateTimeseries type: object AllowMemberJoiningRule: allOf: - $ref: '#/components/schemas/MemberJoiningRule' description: A rule for members joining a private vlan properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A rule for members joining a private vlan`. example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: description: 'The `id` of the related `NetworkService`. ' example: TmV0d29ya1NlcnZpY2U6NDI= type: string required: - type - network_service - id - consuming_account - managing_account title: AllowMemberJoiningRule type: object AllowMemberJoiningRulePatch: allOf: - $ref: '#/components/schemas/MemberJoiningRulePatch' description: A vlan member joining rule update properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A vlan member joining rule update`. example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVBhdGNoOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string title: AllowMemberJoiningRulePatch type: object AllowMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/MemberJoiningRuleRequest' description: A new vlan member joining rule properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A new vlan member joining rule`. example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVJlcXVlc3Q6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: description: 'The `id` of the related `NetworkService`. ' example: TmV0d29ya1NlcnZpY2U6NDI= type: string required: - type - network_service - id - consuming_account - managing_account title: AllowMemberJoiningRuleRequest type: object AllowMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: A vlan member joining rule update properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A vlan member joining rule update`. example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVVwZGF0ZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string required: - type - id - consuming_account - managing_account title: AllowMemberJoiningRuleUpdate type: object ApiExtension: description: Implementation specific API extensions properties: base_url: description: 'Extension endpoints are available under this base url. ' example: https://ixapi.ixp.example.com/v2/inet-services/ format: uri type: string documentation_url: description: 'URL of the documentation homepage of the extension. ' example: https://docs.ixp.example.com/ix-api/extensions/inet-services format: uri type: string name: description: 'Name of the extension. ' example: iNet Services type: string publisher: description: 'Publisher of the extension. ' example: EXAMPLE-IX type: string spec_url: description: 'URL of the extensions schema specifications. The schema format schould be OpenAPI v3. ' example: https://docs.ixp.example.com/ix-api/extensions/inet-services/schema.json format: uri type: string required: - spec_url - base_url - documentation_url - publisher - name title: ApiExtension type: object ApiFeatures: description: Optional API Features properties: pagination: description: 'The API implementation supports pagination on `list` operations.' type: boolean title: ApiFeatures type: object ApiHealth: description: Health Status Response properties: checks: additionalProperties: additionalProperties: type: string type: object description: 'The "checks" object MAY have a number of unique keys, one for each logical downstream dependency or sub-component. Since each sub-component may be backed by several nodes with varying health statuses, these keys point to arrays of objects. In case of a single-node sub-component (or if presence of nodes is not relevant), a single-element array SHOULD be used as the value, for consistency. Please see https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html#the-checks-object for details.' type: object description: description: A human-friendly description of the service. type: string links: additionalProperties: type: string description: 'Is an object containing link relations and URIs [RFC3986] for external links that MAY contain more information about the health of the endpoint.' type: object notes: description: Array of notes relevant to current state of health. items: type: string type: array output: description: Raw error output, in case of "fail" or "warn" states. type: string releaseId: description: 'Release version of the api implementation. ' example: 1.23.0 type: string serviceId: description: A unique identifier of the service, in the application scope. type: string status: description: 'status indicates whether the service status is acceptable or not.' enum: - pass - fail - warn type: string version: description: 'Public version of the service. ' example: '1' type: string required: - status title: ApiHealth type: object ApiImplementation: description: API Implementation properties: schema_version: description: 'Version of the implemented IX-API schema. ' example: 2.0.0 type: string service_version: description: 'Version of the API service. ' example: 1.23.0 type: string supported_features: $ref: '#/components/schemas/ApiFeatures' supported_network_feature_config_types: description: 'Array of supported network feature config types. ' example: - route_server items: type: string type: array supported_network_feature_types: description: 'Array of supported network feature types. ' example: - route_server items: type: string type: array supported_network_service_config_types: description: 'Array of supported network service config types. ' example: - exchange_lan - p2p_vc - cloud_vc items: type: string type: array supported_network_service_types: description: 'Array of network service types, supported by the IX. ' example: - exchange_lan - p2p_vc - cloud_vc items: type: string type: array supported_operations: description: 'Array of implemented operations of the ix-api schema. ' example: - connections_list - connections_read - network_service_configs_create items: type: string type: array required: - supported_features - supported_operations - supported_network_feature_config_types - supported_network_feature_types - supported_network_service_config_types - supported_network_service_types - schema_version title: ApiImplementation type: object AuthToken: description: AuthToken properties: access_token: type: string refresh_token: type: string required: - refresh_token - access_token title: AuthToken type: object AuthTokenRequest: description: AuthTokenRequest properties: api_key: maxLength: 16 minLength: 16 type: string api_secret: maxLength: 86 minLength: 86 type: string required: - api_secret - api_key title: AuthTokenRequest type: object AvailabilityZone: description: AvailabilityZone properties: id: description: The *primary identifier* of the `AvailabilityZone`. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== readOnly: true type: string name: description: 'The name (description) for the availability zone ' example: Network A maxLength: 80 type: string required: - name - id title: AvailabilityZone type: object BillingInformation: description: 'Optional information required for issuing invoices. Only accounts with `billing_information` present can be used as a `billing_account`. *(Sensitive Property)*' properties: address: $ref: '#/components/schemas/Address' name: description: 'Name of the organisation receiving invoices. ' example: Moonoc Network Services LLS. maxLength: 80 type: string vat_number: description: 'Value-added tax number, required for european reverse charge system. ' example: UK2300000042 maxLength: 20 minLength: 2 nullable: true type: string required: - address - name title: BillingInformation type: object CancellationPolicy: description: Cancellation Policy properties: charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service.' format: date type: string required: - charged_until - decommission_at title: CancellationPolicy type: object CancellationRequest: description: Service Cancellation Request properties: decommission_at: description: 'An optional date for scheduling the cancellation and service decommissioning.' format: date type: string title: CancellationRequest type: object CloudConfig: description: 'The `CloudConfig` provides additional configuration for creating the `NetworkServiceConfig` on the cloud provider side. The `nsc_required_cloud_config_fields` and `nsc_supported_cloud_config_fields` attributes of the `ProductOffering` specifies which fields are required or can be optionally supplied. When creating the `NetworkServiceConfig` with a `l3_config` and a `routing_functions`, some required fields will automatically be derived from the `l3_config` and can be ommitted. Values in the `cloud_config` will have precedence over the `l3_config`.' properties: bfd: description: Enable BFD for the BGP session. type: boolean bgp_address_family: enum: - ipv4 - ipv6 type: string bgp_neighbor_address: description: The IP address of the BGP neighbor. type: string bgp_neighbor_address_primary: description: The primary IP address of the BGP neighbor. type: string bgp_neighbor_address_secondary: description: The secondary IP address of the BGP neighbor. type: string bgp_neighbor_asn: description: The ASN of the BGP neighbor. type: integer bgp_password: description: The password to use for BGP sessions. type: string local_address: description: 'The IP address of the router function instance in CIDR notation.' type: string local_address_primary: description: 'The primary IP address of the router function instance in CIDR notation.' type: string local_address_secondary: description: 'The secondary IP address of the router function instance in CIDR notation.' type: string local_asn: description: The local ASN. type: integer peering_type: description: 'Some `cloud_vc` network services require selecting a peering type. See the `nsc_supported_cloud_config_peering_types` attribute of the corresponding `ProductOffering` for valid values.' type: string vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. The `nsc_required_cloud_config_fields` attribute of the `ProductOffering` will include `vlan` if `provider_vlans` are `multi`.' format: int32 maximum: 4094 minimum: 1 type: integer title: CloudConfig type: object CloudNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Cloud Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string delivery_method: description: The exchange delivers the service over a `shared` or `dedicated` NNI. enum: - dedicated - shared type: string display_name: maxLength: 256 type: string diversity: description: 'The service can be delivered over multiple handovers from the exchange to the `service_provider`. The `diversity` denotes the number of handovers between the exchange and the service provider. A value of two signals a redundant service. Only one network service configuration for each `handover` and `cloud_vlan` can be created.' minimum: 1 type: integer downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Cloud Network Product Offering`. example: Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_cloud_config_fields: description: 'A list of required attributes in the `cloud_config` of a corresponding `NetworkServiceConfig`. For example: `"vlan"`, `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_neighbor_asn - bgp_password - local_address_primary items: type: string type: array nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_cloud_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"vlan"`, "`peering_type`", `"bgp_password"`, `"bgp_neighbor_address"`, ... ' example: - bgp_neighbor_asn - bgp_password - local_address_primary items: type: string type: array nsc_supported_cloud_config_peering_types: description: 'The supported peering types for the cloud network service. In case selecting a peering type is required, the `peering_type` property will be in the `nsc_required_cloud_config_fields` list. ' example: - private - public - microsoft items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string service_provider_pop: description: 'The datacenter id of the partner NNI to the service provider. It supposed to be used when identifying a location via the cloud provider''s APIs. ' example: INX6 nullable: true type: string service_provider_pop_name: description: 'The datacenter description of the partner NNI to the service provider. ' example: Interxion FRA6, Frankfurt, DEU nullable: true type: string service_provider_region: description: 'The service provider offers the network service for a specific region. ' example: eu-central-1 nullable: true type: string service_provider_workflow: description: 'When the workflow is `provider_first` the subscriber creates a circuit with the cloud provider and provides a `cloud_key` for filtering the product-offerings. If the workflow is `exchange_first` the IX will create the cloud circuit on the provider side. ' enum: - exchange_first - provider_first example: exchange_first type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - nsc_supported_cloud_config_fields - nsc_required_cloud_config_fields - nsc_supported_cloud_config_peering_types - diversity - delivery_method - service_provider_workflow - service_provider_pop - service_provider_region - nsc_supported_l3_config_fields - nsc_required_l3_config_fields - bandwidth_max - bandwidth_min - service_metro_area - service_metro_area_network - provider_vlans - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: CloudNetworkProductOffering type: object CloudNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Cloud Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string delivery_method: description: The exchange delivers the service over a `shared` or `dedicated` NNI. enum: - dedicated - shared type: string display_name: maxLength: 256 type: string diversity: description: 'The service can be delivered over multiple handovers from the exchange to the `service_provider`. The `diversity` denotes the number of handovers between the exchange and the service provider. A value of two signals a redundant service. Only one network service configuration for each `handover` and `cloud_vlan` can be created.' minimum: 1 type: integer downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Cloud Network Product Offering`. example: Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI= readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_cloud_config_fields: description: 'A list of required attributes in the `cloud_config` of a corresponding `NetworkServiceConfig`. For example: `"vlan"`, `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_neighbor_asn - bgp_password - local_address_primary items: type: string type: array nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_cloud_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"vlan"`, "`peering_type`", `"bgp_password"`, `"bgp_neighbor_address"`, ... ' example: - bgp_neighbor_asn - bgp_password - local_address_primary items: type: string type: array nsc_supported_cloud_config_peering_types: description: 'The supported peering types for the cloud network service. In case selecting a peering type is required, the `peering_type` property will be in the `nsc_required_cloud_config_fields` list. ' example: - private - public - microsoft items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string service_provider_pop: description: 'The datacenter id of the partner NNI to the service provider. It supposed to be used when identifying a location via the cloud provider''s APIs. ' example: INX6 nullable: true type: string service_provider_pop_name: description: 'The datacenter description of the partner NNI to the service provider. ' example: Interxion FRA6, Frankfurt, DEU nullable: true type: string service_provider_region: description: 'The service provider offers the network service for a specific region. ' example: eu-central-1 nullable: true type: string service_provider_workflow: description: 'When the workflow is `provider_first` the subscriber creates a circuit with the cloud provider and provides a `cloud_key` for filtering the product-offerings. If the workflow is `exchange_first` the IX will create the cloud circuit on the provider side. ' enum: - exchange_first - provider_first example: exchange_first type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: CloudNetworkProductOfferingPatch type: object CloudNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: Cloud Network Service properties: availability_zones: description: The availability zones the service can support. example: - QXZhaWxhYmlsaXR5Wm9uZTo0Mg== items: type: string type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string cloud_key: description: 'The cloud key is used to specify to which user or existing circuit of a cloud provider this `network-service` should be provisioned. For example, for a provider like *AWS*, this would be the *account number* (Example: `123456789876`), or for a provider like Azure, this would be the service key (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string diversity: description: 'Same value as the corresponding `ProductOffering`. The service can be delivered over multiple handovers from the exchange to the `service_provider`. The `diversity` denotes the number of handovers between the exchange and the service provider. A value of two signals a redundant service. Only one network service configuration for each `handover` and `cloud_vlan` can be created.' minimum: 1 type: integer external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Cloud Network Service`. example: Q2xvdWROZXR3b3JrU2VydmljZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_features: description: 'A list of `id`s of the related `NetworkFeature`. ' example: - TmV0d29ya0ZlYXR1cmU6NDI= items: type: string type: array nsc_product_offerings: description: 'An optional list of `ProductOffering` which can be used in the network service configs for this service.' example: - UHJvZHVjdE9mZmVyaW5nOjQy items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string provider_ref: description: 'For a cloud network service with the exchange first workflow, the `provider_ref` will be a reference to a resource of the cloud provider. (E.g. the UUID of a virtual circuit.) The `provider_ref` is managed by the exchange and its meaning may vary between different cloud services. ' example: 331050d5-76fb-498b-b72a-248520278fbd nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - type - cloud_key - provider_ref - diversity - id - billing_account - consuming_account - managing_account - product_offering - nsc_required_contact_roles - state title: CloudNetworkService type: object CloudNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: Cloud Network Service Config properties: availability_zone: description: The availability zone that shall be used on the provider side. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string cloud_config: $ref: '#/components/schemas/CloudConfig' cloud_vlan: description: '**Deprecation Notice**: This field is deprecated and will be removed in favor of using the `cloud_config.vlan` property. The `ProductOffering` will include `vlan` in the `nsc_required_cloud_config_fields`, if `provider_vlans` are `multi`. If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: description: The *primary identifier* of the `Cloud Network Service Config`. example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZzo0Mg== readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured `NetworkService`. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - handover - id - role_assignments - billing_account - consuming_account - managing_account - network_service - state title: CloudNetworkServiceConfig type: object CloudNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: Cloud Network Service Config Update properties: availability_zone: description: The availability zone that shall be used on the provider side. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string cloud_config: $ref: '#/components/schemas/CloudConfig' cloud_vlan: description: '**Deprecation Notice**: This field is deprecated and will be removed in favor of using the `cloud_config.vlan` property. The `ProductOffering` will include `vlan` in the `nsc_required_cloud_config_fields`, if `provider_vlans` are `multi`. If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: description: The *primary identifier* of the `Cloud Network Service Config Update`. example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' title: CloudNetworkServiceConfigPatch type: object CloudNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: Cloud Network Service Config Request properties: availability_zone: description: The availability zone that shall be used on the provider side. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string cloud_config: $ref: '#/components/schemas/CloudConfig' cloud_vlan: description: '**Deprecation Notice**: This field is deprecated and will be removed in favor of using the `cloud_config.vlan` property. The `ProductOffering` will include `vlan` in the `nsc_required_cloud_config_fields`, if `provider_vlans` are `multi`. If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: description: The *primary identifier* of the `Cloud Network Service Config Request`. example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI= readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - handover - id - role_assignments - billing_account - network_service - consuming_account - managing_account title: CloudNetworkServiceConfigRequest type: object CloudNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: Cloud Network Service Config Update properties: availability_zone: description: The availability zone that shall be used on the provider side. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string cloud_config: $ref: '#/components/schemas/CloudConfig' cloud_vlan: description: '**Deprecation Notice**: This field is deprecated and will be removed in favor of using the `cloud_config.vlan` property. The `ProductOffering` will include `vlan` in the `nsc_required_cloud_config_fields`, if `provider_vlans` are `multi`. If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: description: The *primary identifier* of the `Cloud Network Service Config Update`. example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg== readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - handover - id - role_assignments - billing_account - consuming_account - managing_account title: CloudNetworkServiceConfigUpdate type: object CloudNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: Cloud Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: description: 'The cloud key is used to specify to which user or existing circuit of a cloud provider this `network-service` should be provisioned. For example, for a provider like *AWS*, this would be the *account number* (Example: `123456789876`), or for a provider like Azure, this would be the service key (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`) **Please note: *Any update to this field may be rejected if the service has successfully been provisioned*.**' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Cloud Network Service Update`. example: Q2xvdWROZXR3b3JrU2VydmljZVBhdGNoOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string title: CloudNetworkServicePatch type: object CloudNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: Cloud Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: description: 'The cloud key is used to specify to which user or existing circuit of a cloud provider this `network-service` should be provisioned. For example, for a provider like *AWS*, this would be the *account number* (Example: `123456789876`), or for a provider like Azure, this would be the service key (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Cloud Network Service Request`. example: Q2xvdWROZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - cloud_key - id - billing_account - consuming_account - managing_account - product_offering title: CloudNetworkServiceRequest type: object CloudNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: Cloud Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: description: 'The cloud key is used to specify to which user or existing circuit of a cloud provider this `network-service` should be provisioned. For example, for a provider like *AWS*, this would be the *account number* (Example: `123456789876`), or for a provider like Azure, this would be the service key (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`) **Please note: *Any update to this field may be rejected if the service has successfully been provisioned*.**' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Cloud Network Service Update`. example: Q2xvdWROZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - cloud_key - id - billing_account - consuming_account - managing_account - product_offering title: CloudNetworkServiceUpdate type: object Conflict: description: A conflict is preventing success properties: remote_resource_id: description: 'The id of the conflicting resource. This is in most cases the id of the current resource. ' example: C:523589 type: string remote_resource_type: description: 'The type of the conflicting resource. ' enum: - accounts - connections - contacts - devices - facilities - ips - macs - member-joining-rules - metro-area-network - network-feature-configs - network-features - network-service-configs - network-services - pops - port-reservations - ports - product-offerings - role-assignments - roles example: contacts type: string resource_id: description: 'The id of the resource which has a conflict with the request operation on the current resource. ' example: RA:2819238 type: string resource_property: description: 'Indicates the property where the resource is in use. ' example: contact nullable: true type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - accounts - connections - contacts - devices - facilities - ips - macs - member-joining-rules - metro-area-network - network-feature-configs - network-features - network-service-configs - network-services - pops - port-reservations - ports - product-offerings - role-assignments - roles example: role-assignments type: string required: - remote_resource_id - remote_resource_type - resource_id - resource_type title: Conflict type: object Connection: description: Connection properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity_allocated: description: 'Sum of the bandwidth of all network 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: description: The *primary identifier* of the `Connection`. example: Q29ubmVjdGlvbjo0Mg== readOnly: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string metro_area: description: 'Optional ID of the service metro area the connection is provided in.' example: TWV0cm9BcmVhOjQy type: string metro_area_network: description: 'Optional ID of the service metro area network the connection is present on.' example: TWV0cm9BcmVhTmV0d29yazo0Mg== type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string name: maxLength: 80 type: string outer_vlan_ethertypes: description: 'The ethertype of the outer tag in hexadecimal notation. ' example: - '0x8100' items: default: '0x8100' enum: - '0x8100' - '0x88a8' - '0x9100' type: string type: array pop: description: 'The ID of the point of presence (see `/pops`), where the physical port(s) are present. ' example: pop:127388:LD3 type: string port_quantity: description: 'The number of ports which should be allocated for this connection.' minimum: 1 type: integer port_reservations: description: A list of `port-reservations` for this connection. example: - UG9ydDo0Mg== items: type: string type: array ports: description: 'References to the port belonging to this connection. Typically all ports within one connection are distributed over the same device. ' example: - ID23 - '42' - '5' items: type: string type: array product_offering: description: The product offering must match the type `connection`. example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array speed: description: 'Shows the total bandwidth of the connection in Mbit/s. ' example: 20000 minimum: 0 nullable: true type: integer state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subscriber_side_demarcs: description: 'The workflow for allocating ports is dependent on the `cross_connect_initiator` property of the `product_offering`: **Cross-Connect initiator: exchange** The subscriber needs to provide a list of demarc information. At least one needs to be provided, but not more than `port_quantity`. The content is interpreted by the exchange and may contain a reference to a pre-existing cross connect order or information required for patching in a structured format (e.g. `...`). Please refer to the usage guide of the internet exchange. --- **Cross-Connect initiator: subscriber** This field can be omitted, when the cross connect initiator is the `subscriber`.' items: type: string type: array vlan_types: description: 'A list of vlan config types you can configure using this connection.' items: enum: - port - dot1q - qinq type: string type: array required: - port_quantity - outer_vlan_ethertypes - vlan_types - capacity_allocation_limit - capacity_allocated - pop - name - product_offering - mode - id - role_assignments - billing_account - consuming_account - managing_account - state title: Connection type: object ConnectionPatch: description: Connection Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Connection Update`. example: Q29ubmVjdGlvblBhdGNoOjQy readOnly: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string product_offering: description: The product offering must match the type `connection`. example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array title: ConnectionPatch type: object ConnectionProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Connection Product Offering properties: contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string cross_connect_initiator: description: 'A cross connect can be initiated by either the exchange or the subscriber. This property affects which side has to provide a LOA and demarc information.' enum: - exchange - subscriber type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string handover_pop: description: 'The ID of the point of presence (see `/pops`), where the physical port will be present. ' example: pop:127388:LD3 nullable: true type: string id: description: The *primary identifier* of the `Connection Product Offering`. example: Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZzo0Mg== readOnly: true type: string maximum_port_quantity: description: 'The maximum amount of ports which can be aggregated in the connection. `null` means no limit.' minimum: 1 nullable: true type: integer name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string required_contact_roles: description: 'The connection will require at least one of each of the specified roles assigned to contacts. The role assignments are associated with the connection through the `role_assignments` list property.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - cross_connect_initiator - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: ConnectionProductOffering type: object ConnectionProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Conncetion Product Offering properties: contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string cross_connect_initiator: description: 'A cross connect can be initiated by either the exchange or the subscriber. This property affects which side has to provide a LOA and demarc information.' enum: - exchange - subscriber type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string handover_pop: description: 'The ID of the point of presence (see `/pops`), where the physical port will be present. ' example: pop:127388:LD3 nullable: true type: string id: description: The *primary identifier* of the `Conncetion Product Offering`. example: Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZ1BhdGNoOjQy readOnly: true type: string maximum_port_quantity: description: 'The maximum amount of ports which can be aggregated in the connection. `null` means no limit.' minimum: 1 nullable: true type: integer name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string required_contact_roles: description: 'The connection will require at least one of each of the specified roles assigned to contacts. The role assignments are associated with the connection through the `role_assignments` list property.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: ConnectionProductOfferingPatch type: object ConnectionRequest: description: Request a new connection properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber` and might be `null`. Please refer to the usage guide of the internet exchange.' nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Request a new connection`. example: Q29ubmVjdGlvblJlcXVlc3Q6NDI= readOnly: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string port_quantity: description: 'The number of `PortReservation`s that will be created for this connection.' minimum: 1 type: integer product_offering: description: The product offering must match the type `connection`. example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array subscriber_side_demarcs: description: 'The workflow for allocating ports is dependent on the `cross_connect_initiator` property of the `product_offering`: **Cross-Connect initiator: exchange** The subscriber needs to provide a list of demarc information. At least one needs to be provided, but not more than `port_quantity`. The content is interpreted by the exchange and may contain a reference to a pre-existing cross connect order or information required for patching in a structured format (e.g. `...`). Please refer to the usage guide of the internet exchange. --- **Cross-Connect initiator: subscriber** This field can be omitted, when the cross connect initiator is the `subscriber`.' items: type: string type: array required: - port_quantity - product_offering - mode - id - role_assignments - billing_account - consuming_account - managing_account title: ConnectionRequest type: object ConnectionUpdate: description: Connection Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Connection Update`. example: Q29ubmVjdGlvblVwZGF0ZTo0Mg== readOnly: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string product_offering: description: The product offering must match the type `connection`. example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array required: - product_offering - mode - id - role_assignments - billing_account - consuming_account - managing_account title: ConnectionUpdate type: object Contact: description: Contact properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Contact`. example: Q29udGFjdDo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - id - consuming_account - managing_account title: Contact type: object ContactPatch: description: Contact Update properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Contact Update`. example: Q29udGFjdFBhdGNoOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string title: ContactPatch type: object ContactRequest: description: Contact Create Request properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Contact Create Request`. example: Q29udGFjdFJlcXVlc3Q6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - id - consuming_account - managing_account title: ContactRequest type: object ContactUpdate: description: Contact Update properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Contact Update`. example: Q29udGFjdFVwZGF0ZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - id - consuming_account - managing_account title: ContactUpdate type: object DenyMemberJoiningRule: allOf: - $ref: '#/components/schemas/MemberJoiningRule' description: A rule for members joining a private vlan properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: description: 'The `id` of the related `NetworkService`. ' example: TmV0d29ya1NlcnZpY2U6NDI= type: string required: - type - network_service - consuming_account - managing_account title: DenyMemberJoiningRule type: object DenyMemberJoiningRulePatch: allOf: - $ref: '#/components/schemas/MemberJoiningRulePatch' description: A vlan member joining rule update properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string title: DenyMemberJoiningRulePatch type: object DenyMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/MemberJoiningRuleRequest' description: A new vlan member joining rule properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: description: 'The `id` of the related `NetworkService`. ' example: TmV0d29ya1NlcnZpY2U6NDI= type: string required: - type - network_service - consuming_account - managing_account title: DenyMemberJoiningRuleRequest type: object DenyMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: A vlan member joining rule update properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string required: - type - consuming_account - managing_account title: DenyMemberJoiningRuleUpdate type: object Device: description: Device properties: capabilities: items: $ref: '#/components/schemas/DeviceCapability' type: array facility: description: 'Identifier of the facility where the device is physically based.' example: RmFjaWxpdHk6NDI= readOnly: true type: string id: description: The *primary identifier* of the `Device`. example: RGV2aWNlOjQy readOnly: true type: string name: description: 'Name of the device ' example: edge2.moon.space-ix.net maxLength: 180 type: string pop: description: The `PointOfPresence` the device is in. example: UG9pbnRPZlByZXNlbmNlOjQy type: string required: - pop - name - id title: Device type: object DeviceCapability: description: Device Capability properties: availability: description: 'Count of available ports on device ' example: 23 format: int32 maximum: 2147483647 minimum: 0 readOnly: true type: integer max_lag: description: Maximum count of ports which can be bundled to a max_lag example: 8 format: int32 maximum: 32767 minimum: 0 readOnly: true type: integer media_type: description: 'The media type of the port (e.g. 1000BASE-LX, 10GBASE-LR, ...) ' example: 1000BASE-LX maxLength: 20 readOnly: true type: string speed: description: 'Speed of port in Mbit/s ' example: 1000 readOnly: true type: integer required: - availability - max_lag - speed - media_type title: DeviceCapability type: object DeviceConnection: description: Device Connection properties: capacity_max: format: int32 maximum: 2147483647 minimum: 0 type: integer connected_device: description: 'The `id` of the related `Device`. ' example: RGV2aWNlOjQy type: string device: description: 'The `id` of the related `Device`. ' example: RGV2aWNlOjQy type: string id: description: The *primary identifier* of the `Device Connection`. example: RGV2aWNlQ29ubmVjdGlvbjo0Mg== readOnly: true type: string required: - id - connected_device - device - capacity_max title: DeviceConnection type: object Event: description: Event properties: account: description: 'The `id` of the related `Account`. ' example: QWNjb3VudDo0Mg== readOnly: true type: string payload: type: object serial: type: integer timestamp: format: date-time type: string required: - timestamp - payload - type - account - serial title: Event type: object ExchangeLanNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Exchange Lan Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_lan_network_service: description: The id of the exchange lan network service. example: TmV0d29ya1NlcnZpY2U6NDI= type: string exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Exchange Lan Network Product Offering`. example: RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - exchange_lan_network_service - nsc_supported_l3_config_fields - nsc_required_l3_config_fields - bandwidth_max - bandwidth_min - service_metro_area - service_metro_area_network - provider_vlans - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: ExchangeLanNetworkProductOffering type: object ExchangeLanNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Exchange Lan Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_lan_network_service: description: The id of the exchange lan network service. example: TmV0d29ya1NlcnZpY2U6NDI= type: string exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Exchange Lan Network Product Offering`. example: RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI= readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: ExchangeLanNetworkProductOfferingPatch type: object ExchangeLanNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: Exchange Lan Network Service properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Exchange Lan Network Service`. example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZTo0Mg== readOnly: true type: string ixfdb_ixid: description: id of ixfdb nullable: true type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string metro_area_network: description: 'Id of the `MetroAreaNetwork` where the exchange lan network service is directly provided. Same as `service_metro_area_network` on the related `ProductOffering`. ' example: man:293225:LON2 type: string name: description: Exchange-dependent service name, will be shown on the invoice. maxLength: 40 type: string network_features: description: 'A list of `id`s of the related `NetworkFeature`. ' example: - TmV0d29ya0ZlYXR1cmU6NDI= items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array peeringdb_ixid: description: PeeringDB ixid nullable: true type: integer product_offering: description: '*deprecation notice*' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string required: - type - subnet_v6 - subnet_v4 - network_features - metro_area_network - name - id - consuming_account - managing_account - nsc_required_contact_roles - state title: ExchangeLanNetworkService type: object ExchangeLanNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: Exchange Lan Network Service Config properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array availability_zone: description: 'The availability zone that shall be used on the provider side. Availability Zones may not be supported for exchange_lan because by default they span multiple networks. If an availability zone is set then this refers to a circuit that is placed on a specific on-ramp to the exchange_lan.' example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Exchange Lan Network Service Config`. example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZzo0Mg== readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured `NetworkService`. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'The product offering must match the type `exchange_lan` and must refer to the related network service through the `exchange_lan_network_service` property.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string shared_statistics: $ref: '#/components/schemas/SharedStatisticsConfig' state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - product_offering - listed - asns - id - role_assignments - billing_account - consuming_account - managing_account - network_service - state title: ExchangeLanNetworkServiceConfig type: object ExchangeLanNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: Exchange Lan Network Service Config Update properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array availability_zone: description: 'The availability zone that shall be used on the provider side. Availability Zones may not be supported for exchange_lan because by default they span multiple networks. If an availability zone is set then this refers to a circuit that is placed on a specific on-ramp to the exchange_lan.' example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Exchange Lan Network Service Config Update`. example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string shared_statistics: $ref: '#/components/schemas/SharedStatisticsConfig' vlan_config: $ref: '#/components/schemas/VlanConfig' title: ExchangeLanNetworkServiceConfigPatch type: object ExchangeLanNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: Exchange Lan Network Service Config Request properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array availability_zone: description: 'The availability zone that shall be used on the provider side. Availability Zones may not be supported for exchange_lan because by default they span multiple networks. If an availability zone is set then this refers to a circuit that is placed on a specific on-ramp to the exchange_lan.' example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Exchange Lan Network Service Config Request`. example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI= readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'The product offering must match the type `exchange_lan` and must refer to the related network service through the `exchange_lan_network_service` property.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string shared_statistics: $ref: '#/components/schemas/SharedStatisticsConfig' vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - product_offering - listed - asns - id - role_assignments - billing_account - network_service - consuming_account - managing_account title: ExchangeLanNetworkServiceConfigRequest type: object ExchangeLanNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: Exchange Lan Network Service Config Update properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array availability_zone: description: 'The availability zone that shall be used on the provider side. Availability Zones may not be supported for exchange_lan because by default they span multiple networks. If an availability zone is set then this refers to a circuit that is placed on a specific on-ramp to the exchange_lan.' example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Exchange Lan Network Service Config Update`. example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg== readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string shared_statistics: $ref: '#/components/schemas/SharedStatisticsConfig' vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - listed - asns - id - role_assignments - billing_account - consuming_account - managing_account title: ExchangeLanNetworkServiceConfigUpdate type: object Facility: description: Facility properties: address_country: description: 'ISO 3166-1 alpha-2 country code, for example DE ' example: US maxLength: 2 type: string address_locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 80 type: string address_region: description: The region. For example, CA example: CA maxLength: 80 type: string id: description: The *primary identifier* of the `Facility`. example: RmFjaWxpdHk6NDI= readOnly: true type: string latitude: description: 'Latitude of the facility''s location. ' example: 52.437879 type: number longitude: description: 'Longitude of the facility''s location. ' example: 13.650965 type: number metro_area: description: 'Id of the `MetroArea` the DC is located in. ' example: met:93214980:BER type: string name: description: 'Name of the Datacenter as called by the operator ' example: Crater DC Moon 1 maxLength: 80 type: string organisation_name: description: 'Name of Datacenter operator ' example: Moon Datacenters maxLength: 80 type: string peeringdb_facility_id: description: '[PeeringDB](https://www.peeringdb.com) facitlity ID, can be extracted from the url https://www.peeringdb.com/fac/$id ' example: 103 format: int32 maximum: 2147483647 minimum: 0 nullable: true type: integer pops: description: List of pops reachable from the `Facility`. example: - UG9pbnRPZlByZXNlbmNlOjQy items: type: string type: array postal_code: description: A postal code. For example, 9404 example: '9409' maxLength: 18 type: string street_address: description: The street address. For example, 1600 Amphitheatre Pkwy. example: 1600 Amphitheatre Pkwy. maxLength: 80 type: string required: - pops - organisation_name - street_address - postal_code - address_region - address_locality - address_country - metro_area - name - id title: Facility type: object IXPSpecificFeatureFlag: description: IXP-Specific Feature Flag properties: description: description: 'The description of the feature flag. ' example: RPKI reject invalid filtering is available maxLength: 80 type: string mandatory: description: 'This feature will always be enabled, even if not provided in the corresponding config''s list of `flags`. ' type: boolean name: description: 'The name of the feature flag. ' example: RPKI-HARD-FILTER maxLength: 40 type: string required: - mandatory - description - name title: IXPSpecificFeatureFlag type: object IXPSpecificFeatureFlagConfig: description: IXP-Specific Feature Flag Configuration properties: enabled: description: 'Enable the feature. *Mandatory features can not be disabled*.' type: boolean name: description: 'The name of the feature flag. ' example: RPKI-HARD-FILTER maxLength: 40 type: string required: - enabled - name title: IXPSpecificFeatureFlagConfig type: object IpAddress: description: IP-Address properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: description: The *primary identifier* of the `IP-Address`. example: SXBBZGRyZXNzOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' enum: - 4 - 6 example: 4 type: integer required: - prefix_length - address - version - id - consuming_account - managing_account title: IpAddress type: object IpAddressPatch: description: IP-Address Update properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: description: The *primary identifier* of the `IP-Address Update`. example: SXBBZGRyZXNzUGF0Y2g6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' enum: - 4 - 6 example: 4 type: integer title: IpAddressPatch type: object IpAddressRequest: description: IP-Address / Prefix allocation Request properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: description: The *primary identifier* of the `IP-Address / Prefix allocation Request`. example: SXBBZGRyZXNzUmVxdWVzdDo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' enum: - 4 - 6 example: 4 type: integer required: - prefix_length - address - version - id - consuming_account - managing_account title: IpAddressRequest type: object IpAddressShort: description: IP-Address properties: address: description: 'The IP address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: fd42:2342::1 type: string version: description: 'The version of the internet protocol. ' enum: - 4 - 6 example: 6 type: integer required: - address - version title: IpAddressShort type: object IpAddressUpdate: description: IP-Address Update properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: description: The *primary identifier* of the `IP-Address Update`. example: SXBBZGRyZXNzVXBkYXRlOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' enum: - 4 - 6 example: 4 type: integer required: - prefix_length - address - version - id - consuming_account - managing_account title: IpAddressUpdate type: object L3Config: description: 'The layer 3 configuration for the NetworkServiceConfig. It is **required** when a `routing_function` is provided. It may be required with a `connection`, depending on the `ProductOffering`. Please check the `nsc_required_l3_config_fields` attribute of the corresponding `ProductOffering` to see which fields are required. For additional optional fields, please check the `nsc_supported_l3_config_fields` attribute of the `ProductOffering`.' properties: bfd: description: Enable BFD for the BGP session. type: boolean bgp_address_family: enum: - ipv4 - ipv6 type: string bgp_neighbor_address: description: The IP address of the BGP neighbor. type: string bgp_neighbor_address_primary: description: The primary IP address of the BGP neighbor. type: string bgp_neighbor_address_secondary: description: The secondary IP address of the BGP neighbor. type: string bgp_neighbor_asn: description: The ASN of the BGP neighbor. type: integer bgp_password: description: The password to use for BGP sessions. type: string local_address: description: 'The IP address of the router function instance in CIDR notation.' type: string local_address_primary: description: 'The primary IP address of the router function instance in CIDR notation.' type: string local_address_secondary: description: 'The secondary IP address of the router function instance in CIDR notation.' type: string local_asn: description: The local ASN. type: integer title: L3Config type: object MP2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: MP2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `MP2MP Network Product Offering`. example: TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - nsc_supported_l3_config_fields - nsc_required_l3_config_fields - bandwidth_max - bandwidth_min - service_metro_area - service_metro_area_network - provider_vlans - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: MP2MPNetworkProductOffering type: object MP2MPNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: MP2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `MP2MP Network Product Offering`. example: TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI= readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: MP2MPNetworkProductOfferingPatch type: object MP2MPNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: MP2MP Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service`. example: TVAyTVBOZXR3b3JrU2VydmljZTo0Mg== readOnly: true type: string mac_acl_protection: description: 'When enabled, only MAC addresses in the referenced in the network service config''s `macs` property are allowed to send and receive traffic on this network service.' type: boolean managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string member_joining_rules: description: 'A list of `id`s of the related `MemberJoiningRule`. ' example: - TWVtYmVySm9pbmluZ1J1bGU6NDI= items: type: string type: array network_features: description: 'A list of `id`s of the related `NetworkFeature`. ' example: - TmV0d29ya0ZlYXR1cmU6NDI= items: type: string type: array nsc_product_offerings: description: 'An optional list of `ProductOffering` which can be used in the network service configs for this service.' example: - UHJvZHVjdE9mZmVyaW5nOjQy items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string required: - type - network_features - member_joining_rules - id - billing_account - consuming_account - managing_account - product_offering - nsc_required_contact_roles - state title: MP2MPNetworkService type: object MP2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: MP2MP Network Service Config properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Config`. example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZzo0Mg== readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' macs: description: 'A list of MAC address IDs. You have to register the address using the `macs_create` operation.' example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured `NetworkService`. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - consuming_account - managing_account - network_service - state title: MP2MPNetworkServiceConfig type: object MP2MPNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: MP2MP Network Service Config Update properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Config Update`. example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' macs: description: 'A list of MAC address IDs. You have to register the address using the `macs_create` operation.' example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' title: MP2MPNetworkServiceConfigPatch type: object MP2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: MP2MP Network Service Config Request properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Config Request`. example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI= readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' macs: description: 'A list of MAC address IDs. You have to register the address using the `macs_create` operation.' example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - network_service - consuming_account - managing_account title: MP2MPNetworkServiceConfigRequest type: object MP2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: MP2MP Network Service Config Update properties: asns: description: 'A list of AS numbers. Depending on the implementation, these can be used for different purposes. For example in the members list on the website, links to the looking glass or even generating IPv6 prefixes.' items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Config Update`. example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg== readOnly: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' example: - SXBBZGRyZXNzOjQy items: type: string readOnly: true type: array l3_config: $ref: '#/components/schemas/L3Config' macs: description: 'A list of MAC address IDs. You have to register the address using the `macs_create` operation.' example: - TWFjQWRkcmVzczo0Mg== items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - consuming_account - managing_account title: MP2MPNetworkServiceConfigUpdate type: object MP2MPNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: MP2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Update`. example: TVAyTVBOZXR3b3JrU2VydmljZVBhdGNoOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string title: MP2MPNetworkServicePatch type: object MP2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: MP2MP Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Request`. example: TVAyTVBOZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string required: - type - id - billing_account - consuming_account - managing_account - product_offering title: MP2MPNetworkServiceRequest type: object MP2MPNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: MP2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MP2MP Network Service Update`. example: TVAyTVBOZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string required: - type - id - billing_account - consuming_account - managing_account - product_offering title: MP2MPNetworkServiceUpdate type: object MacAddress: description: MAC-Address properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MAC-Address`. example: TWFjQWRkcmVzczo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: description: 'When a mac address is assigned to an NSC, and the current datetime is before this value, the MAC address *can* be used on the peering platform. Afterwards, it is supposed to be unassigned from the NSC and cannot any longer be used on the peering platform. If the value is null or the property does not exist, the MAC address is valid indefinitely. The value may not be in the past.' format: date-time nullable: true type: string valid_not_before: description: 'When a mac address is assigned to a NSC, and the current datetime is before this value, then the MAC address *cannot* be used on the peering platform. Afterwards, it is supposed to be available. If the value is `null` or the property does not exist, the mac address is valid from the creation date.' format: date-time nullable: true type: string required: - address - id - consuming_account - managing_account title: MacAddress type: object MacAddressRequest: description: MAC-Address Request properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `MAC-Address Request`. example: TWFjQWRkcmVzc1JlcXVlc3Q6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: description: 'When a mac address is assigned to an NSC, and the current datetime is before this value, the MAC address *can* be used on the peering platform. Afterwards, it is supposed to be unassigned from the NSC and cannot any longer be used on the peering platform. If the value is null or the property does not exist, the MAC address is valid indefinitely. The value may not be in the past.' format: date-time nullable: true type: string valid_not_before: description: 'When a mac address is assigned to a NSC, and the current datetime is before this value, then the MAC address *cannot* be used on the peering platform. Afterwards, it is supposed to be available. If the value is `null` or the property does not exist, the mac address is valid from the creation date.' format: date-time nullable: true type: string required: - address - id - consuming_account - managing_account title: MacAddressRequest type: object MemberJoiningRule: description: MemberJoiningRule discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRule' deny: '#/components/schemas/DenyMemberJoiningRule' propertyName: type properties: type: type: string required: - type title: MemberJoiningRule type: object MemberJoiningRulePatch: description: MemberJoiningRulePatch discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRulePatch' deny: '#/components/schemas/DenyMemberJoiningRulePatch' propertyName: type properties: type: type: string required: - type title: MemberJoiningRulePatch type: object MemberJoiningRuleRequest: description: MemberJoiningRuleRequest discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleRequest' deny: '#/components/schemas/DenyMemberJoiningRuleRequest' propertyName: type properties: type: type: string required: - type title: MemberJoiningRuleRequest type: object MemberJoiningRuleUpdate: description: MemberJoiningRuleUpdate discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleUpdate' deny: '#/components/schemas/DenyMemberJoiningRuleUpdate' propertyName: type properties: type: type: string required: - type title: MemberJoiningRuleUpdate type: object MetroArea: description: MetroArea properties: display_name: description: 'The name of the metro area. Likely the same as the IATA code. ' example: FRA maxLength: 64 type: string facilities: description: List of facilities the metro area network. example: - RmFjaWxpdHk6NDI= items: type: string type: array iata_code: description: 'The three letter IATA airport code for identiying the metro area. ' example: FRA maxLength: 3 type: string id: description: The *primary identifier* of the `MetroArea`. example: TWV0cm9BcmVhOjQy readOnly: true type: string metro_area_networks: description: List of networks in the metro area. example: - TWV0cm9BcmVhTmV0d29yazo0Mg== items: type: string type: array un_locode: description: 'The UN/LOCODE for identifying the metro area. ' example: DE FRA maxLength: 6 type: string required: - metro_area_networks - facilities - display_name - iata_code - un_locode - id title: MetroArea type: object MetroAreaNetwork: description: MetroAreaNetwork properties: id: description: The *primary identifier* of the `MetroAreaNetwork`. example: TWV0cm9BcmVhTmV0d29yazo0Mg== readOnly: true type: string metro_area: description: 'The id of the metro area. ' example: met:199399:FRA type: string name: description: 'The name of the metro area network. ' example: MY-IX-FRA1 maxLength: 32 type: string pops: description: List of pops in the metro area network. example: - UG9pbnRPZlByZXNlbmNlOjQy items: type: string type: array service_provider: description: 'The service provider is operating the network. Usually the exchange. ' example: MY-IX maxLength: 128 type: string required: - pops - service_provider - metro_area - name - id title: MetroAreaNetwork type: object NetworkFeature: description: NetworkFeature discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeature' propertyName: type properties: type: type: string required: - type title: NetworkFeature type: object NetworkFeatureConfig: description: NetworkFeatureConfig discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfig' propertyName: type properties: type: type: string required: - type title: NetworkFeatureConfig type: object NetworkFeatureConfigPatch: description: NetworkFeatureConfigPatch discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPatch' propertyName: type properties: type: type: string required: - type title: NetworkFeatureConfigPatch type: object NetworkFeatureConfigRequest: description: NetworkFeatureConfigRequest discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest' propertyName: type properties: type: type: string required: - type title: NetworkFeatureConfigRequest type: object NetworkFeatureConfigUpdate: description: NetworkFeatureConfigUpdate discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate' propertyName: type properties: type: type: string required: - type title: NetworkFeatureConfigUpdate type: object NetworkService: description: NetworkService discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' exchange_lan: '#/components/schemas/ExchangeLanNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type properties: type: type: string required: - type title: NetworkService type: object NetworkServiceChangeRequest: description: NetworkServiceChangeRequest properties: capacity: description: 'The desired capacity of the service in Mbps. Must be within the range of `bandwidth_min` and `bandwidth_max` of the `ProductOffering`. When `null` the maximum capacity wil be used.' minimum: 1 nullable: true type: integer product_offering: description: 'Migrate to a diffrent product offering. Please note, that the offering only may differ in bandwidth.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string required: - product_offering title: NetworkServiceChangeRequest type: object NetworkServiceConfig: description: NetworkServiceConfig discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfig' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfig' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfig' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfig' p2p_vc: '#/components/schemas/P2PNetworkServiceConfig' propertyName: type properties: type: type: string required: - type title: NetworkServiceConfig type: object NetworkServiceConfigAggregate: description: Statistics for NetworkServiceConfig properties: aggregates: additionalProperties: $ref: '#/components/schemas/NetworkServiceConfigAggregateStatistics' description: 'Aggregated statistics for a connection or service configuration. For the **property name** the string representation of the aggregate interval in ISO8601 period notation is recommended. For example: `PT5M`, `P1D`, `P30D`,`P1Y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: *id001 type: object required: - aggregates title: NetworkServiceConfigAggregate type: object NetworkServiceConfigAggregateStatistics: description: AggregateStatistics for NetworkServiceConfig properties: accuracy: description: 'The accuracy is the ratio of *total aggregated samples* to *expected samples*. The expected number of samples is the size of the window of the aggregate, divided by the aggregation resolution. For example: A window of `24 h` with an aggregation resolution of `5 m` would yield `288` samples. If only `275` samples are available for aggregation, the accuracy would be `0.95`. ' example: 0.95 maximum: 1.0 minimum: 0.0 type: number average_dps_in: description: 'Average **discards per second** inbound. ' example: 0.01 minimum: 0 type: number average_dps_out: description: 'Averages **discards per second** outbound. ' example: 0.12 minimum: 0 type: number average_eps_in: description: 'Average **errors per second** inbound. ' example: 0.32 minimum: 0 type: number average_eps_out: description: 'Averages **errors per second** outbound. ' example: 0.01 minimum: 0 type: number average_ops_in: description: 'Average inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer average_ops_out: description: 'Average outbound **octets per second**. ' example: 173220 minimum: 0 type: integer average_pps_in: description: 'Average number of inbound **packets per second**. ' example: 1730224 minimum: 0 type: integer average_pps_out: description: 'Average number outbound **packets per second**. ' example: 17456 minimum: 0 type: integer created_at: description: Timestamp when the statistics were created. format: date-time type: string end: description: End of the traffic aggregation. format: date-time type: string maximum_in_at: description: Timestamp when the inbound peak occured. format: date-time type: string maximum_ops_in: description: 'Peak inbound **octets per second** during the interval. ' example: 5734882240 minimum: 0 type: integer maximum_ops_out: description: 'Peak outbound **octets per second** during the interval. ' example: 473220 minimum: 0 type: integer maximum_out_at: description: Timestamp when the outbound peak occured. format: date-time type: string maximum_pps_in: description: 'Peak inbound **packets per second** during the interval. ' example: 1730224 minimum: 0 type: integer maximum_pps_out: description: 'Peak outbound **packets per second** during the interval. ' example: 17456 minimum: 0 type: integer next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string nsc_available_capacity: description: 'The capacity left on the `NetworkServiceConfig` in **megabits per second** (Mbps). ' example: 23000 minimum: 0 type: integer nsc_available_capacity_change_perc: description: 'The percentage change of the available capacity since the last update. ' example: -13.2 type: number percentile95_ops_out: description: '95th percentile of outbound **octets per second**. ' example: 173220 minimum: 0 type: integer percentile95_pps_in: description: '95th percentile of the inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer percentile95_pps_out: description: '95th percentile of outbound **packets per second**. ' example: 17456 minimum: 0 type: integer start: description: Start of the traffic aggregation. format: date-time type: string title: description: 'Title of the aggregated statistics. ' example: 30 Days type: string required: - average_ops_out - average_ops_in - average_pps_out - average_pps_in - next_update_at - created_at - accuracy - end - start - title title: NetworkServiceConfigAggregateStatistics type: object NetworkServiceConfigPatch: description: NetworkServiceConfigPatch discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigPatch' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigPatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigPatch' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigPatch' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigPatch' propertyName: type properties: type: type: string required: - type title: NetworkServiceConfigPatch type: object NetworkServiceConfigRequest: description: NetworkServiceConfigRequest discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequest' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequest' propertyName: type properties: type: type: string required: - type title: NetworkServiceConfigRequest type: object NetworkServiceConfigUpdate: description: NetworkServiceConfigUpdate discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdate' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigUpdate' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigUpdate' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdate' propertyName: type properties: type: type: string required: - type title: NetworkServiceConfigUpdate type: object NetworkServiceDeleteResponse: description: NetworkServiceDeleteResponse discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type properties: type: type: string required: - type title: NetworkServiceDeleteResponse type: object NetworkServicePatch: description: NetworkServicePatch discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServicePatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePatch' p2mp_vc: '#/components/schemas/P2MPNetworkServicePatch' p2p_vc: '#/components/schemas/P2PNetworkServicePatch' propertyName: type properties: type: type: string required: - type title: NetworkServicePatch type: object NetworkServiceRequest: description: NetworkServiceRequest discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceRequest' propertyName: type properties: type: type: string required: - type title: NetworkServiceRequest type: object NetworkServiceUpdate: description: NetworkServiceUpdate discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceUpdate' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceUpdate' p2mp_vc: '#/components/schemas/P2MPNetworkServiceUpdate' p2p_vc: '#/components/schemas/P2PNetworkServiceUpdate' propertyName: type properties: type: type: string required: - type title: NetworkServiceUpdate type: object P2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: P2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `P2MP Network Product Offering`. example: UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmc6NDI= readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - nsc_supported_l3_config_fields - nsc_required_l3_config_fields - bandwidth_max - bandwidth_min - service_metro_area - service_metro_area_network - provider_vlans - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: P2MPNetworkProductOffering type: object P2MPNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: P2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `P2MP Network Product Offering`. example: UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmdQYXRjaDo0Mg== readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: P2MPNetworkProductOfferingPatch type: object P2MPNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: P2MP Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service`. example: UDJNUE5ldHdvcmtTZXJ2aWNlOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string member_joining_rules: description: 'A list of `id`s of the related `MemberJoiningRule`. ' example: - TWVtYmVySm9pbmluZ1J1bGU6NDI= items: type: string type: array network_features: description: 'A list of `id`s of the related `NetworkFeature`. ' example: - TmV0d29ya0ZlYXR1cmU6NDI= items: type: string type: array nsc_product_offerings: description: 'An optional list of `ProductOffering` which can be used in the network service configs for this service.' example: - UHJvZHVjdE9mZmVyaW5nOjQy items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - type - member_joining_rules - network_features - id - billing_account - consuming_account - managing_account - product_offering - nsc_required_contact_roles - state title: P2MPNetworkService type: object P2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: P2MP Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Config`. example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnOjQy readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured `NetworkService`. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - network_service - state - id - role_assignments - billing_account - consuming_account - managing_account title: P2MPNetworkServiceConfig type: object P2MPNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: P2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Config Update`. example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUGF0Y2g6NDI= readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' title: P2MPNetworkServiceConfigPatch type: object P2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: P2MP Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Config Request`. example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUmVxdWVzdDo0Mg== readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - network_service - id - role_assignments - billing_account - consuming_account - managing_account title: P2MPNetworkServiceConfigRequest type: object P2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: P2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Config Update`. example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnVXBkYXRlOjQy readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - consuming_account - managing_account title: P2MPNetworkServiceConfigUpdate type: object P2MPNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: P2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Update`. example: UDJNUE5ldHdvcmtTZXJ2aWNlUGF0Y2g6NDI= readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string title: P2MPNetworkServicePatch type: object P2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: P2MP Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Request`. example: UDJNUE5ldHdvcmtTZXJ2aWNlUmVxdWVzdDo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - id - billing_account - consuming_account - managing_account - product_offering title: P2MPNetworkServiceRequest type: object P2MPNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: P2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2MP Network Service Update`. example: UDJNUE5ldHdvcmtTZXJ2aWNlVXBkYXRlOjQy readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - id - billing_account - consuming_account - managing_account - product_offering title: P2MPNetworkServiceUpdate type: object P2PNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: P2P Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `P2P Network Product Offering`. example: UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZzo0Mg== readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - nsc_supported_l3_config_fields - nsc_required_l3_config_fields - bandwidth_max - bandwidth_min - service_metro_area - service_metro_area_network - provider_vlans - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: P2PNetworkProductOffering type: object P2PNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: P2P Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `P2P Network Product Offering`. example: UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZ1BhdGNoOjQy readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string nsc_required_l3_config_fields: description: 'A list of required attributes in the `l3_config` of a corresponding `NetworkServiceConfig` when used with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"bgp_neighbor_asn"`, `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array nsc_supported_l3_config_fields: description: 'The list of fields which are supported in the `l3_config` when creating the network service config with a `routing_function`. For example: `"bgp_password"`, `"bgp_neighbor_address"` `"local_address_primary"`, ... ' example: - bgp_password - local_address_primary items: type: string type: array orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: P2PNetworkProductOfferingPatch type: object P2PNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: P2P Network Service properties: availability_zones: description: The availability zones for the service. example: - QXZhaWxhYmlsaXR5Wm9uZTo0Mg== items: type: string type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service`. example: UDJQTmV0d29ya1NlcnZpY2U6NDI= readOnly: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string nsc_product_offerings: description: 'An optional list of `ProductOffering` which can be used in the network service configs for this service.' example: - UHJvZHVjdE9mZmVyaW5nOjQy items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - type - joining_member_account - id - billing_account - consuming_account - managing_account - product_offering - nsc_required_contact_roles - state title: P2PNetworkService type: object P2PNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: P2P Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Config`. example: UDJQTmV0d29ya1NlcnZpY2VDb25maWc6NDI= readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured `NetworkService`. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - consuming_account - managing_account - network_service - state title: P2PNetworkServiceConfig type: object P2PNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: P2P Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Config Update`. example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdQYXRjaDo0Mg== readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' title: P2PNetworkServiceConfigPatch type: object P2PNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: P2P Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Config Request`. example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdSZXF1ZXN0OjQy readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. example: TmV0d29ya1NlcnZpY2U6NDI= type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - network_service - consuming_account - managing_account title: P2PNetworkServiceConfigRequest type: object P2PNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: P2P Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: 'The id of the connection to use for this `NetworkServiceConfig`. If no connection is specified, you have to provide a routing function. When a connection is provided, you also need to specify the `vlan_config`. The `routing_function` attribute may not be used. Some network services may require the use of the `l3_config`, please check the `nsc_required_l3_config_fields` attribute of the `ProductOffering`. Connections ans Routing Functions are mutually exclusive.' example: Q29ubmVjdGlvbjo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Config Update`. example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdVcGRhdGU6NDI= readOnly: true type: string l3_config: $ref: '#/components/schemas/L3Config' managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array routing_function: description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`. If no routing function is provided, you need to provide the connection to use. When a routing function is provided, you also need to specify the `l3_config`. The `connection` attribute may not be used. Connections ans Routing Functions are mutually exclusive.' example: Um91dGluZ0Z1bmN0aW9uOjQy type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type - id - role_assignments - billing_account - consuming_account - managing_account title: P2PNetworkServiceConfigUpdate type: object P2PNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: P2P Network Service Update properties: availability_zones: description: The availability zones for the service. example: - QXZhaWxhYmlsaXR5Wm9uZTo0Mg== items: type: string type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Update`. example: UDJQTmV0d29ya1NlcnZpY2VQYXRjaDo0Mg== readOnly: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string title: P2PNetworkServicePatch type: object P2PNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: P2P Network Service Request properties: availability_zones: description: The availability zones for the service. example: - QXZhaWxhYmlsaXR5Wm9uZTo0Mg== items: type: string type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Request`. example: UDJQTmV0d29ya1NlcnZpY2VSZXF1ZXN0OjQy readOnly: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - joining_member_account - id - billing_account - consuming_account - managing_account - product_offering title: P2PNetworkServiceRequest type: object P2PNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: P2P Network Service Update properties: availability_zones: description: The availability zones for the service. example: - QXZhaWxhYmlsaXR5Wm9uZTo0Mg== items: type: string type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `P2P Network Service Update`. example: UDJQTmV0d29ya1NlcnZpY2VVcGRhdGU6NDI= readOnly: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The `id` of the related `ProductOffering`. ' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - type - joining_member_account - id - billing_account - consuming_account - managing_account - product_offering title: P2PNetworkServiceUpdate type: object Peer: description: MAC-, IP-Address and ASN of the peer. properties: asn: description: 'The ASN of the peer. ' example: 65534 minimum: 0 type: integer ip: $ref: '#/components/schemas/IpAddressShort' mac_address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string required: - mac_address title: Peer type: object PeerAggregate: description: PeerStatistics properties: aggregates: additionalProperties: $ref: '#/components/schemas/NetworkServiceConfigAggregateStatistics' description: 'Aggregated statistics for a connection or service configuration. For the **property name** the string representation of the aggregate interval in ISO8601 period notation is recommended. For example: `PT5M`, `P1D`, `P30D`,`P1Y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: *id001 type: object peer: $ref: '#/components/schemas/Peer' required: - peer - aggregates title: PeerAggregate type: object PeerTimeseries: description: PeerStatistics Timeseries properties: created_at: description: Timestamp when the statistics were created. format: date-time type: string fields: description: 'The fields used in the samples. They can be explicitly selected using the `fields` query parameter. The `timestamp` is always included. ' example: - timestamp - average_pps_in - average_pps_out - average_ops_in - average_ops_out items: type: string type: array next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string origin_timezone: description: 'The timezone where the data was collected in tz database format. ' example: Europe/Amsterdam type: string peer: $ref: '#/components/schemas/Peer' precision: description: 'Precision indicates the sampling rate of the aggregated traffic data in seconds. For example if the data is aggregated over 5 minutes, the precision would be 300. ' example: 300 minimum: 0 type: integer samples: description: 'A list of timeseries samples, where samples are n-tuples, where the first element is a timestamp. * `timestamp` (DateTime, `string`, ISO 8601, Example: `"2001-10-23T23:42:10Z"`) The other fields can be selected in the `fields` query from the aggregates. Default fields are: * `average_pps_in` (`integer`) * `average_pps_out` (`integer`) * `average_ops_in` (`integer`) * `average_ops_out` (`integer`) Missing values in the timeseries are represented by `null`.' items: example: - '2019-08-24T14:15:22Z' - 120302 - 42980203 - 320302 - 84990203 items: {} minItems: 1 type: array type: array title: description: 'Title of the timeseries. ' example: 5 Minutes type: string required: - peer - samples - fields - origin_timezone - next_update_at - created_at - precision - title title: PeerTimeseries type: object PointOfPresence: description: Point Of Presence properties: availability_zone: description: Availability zone of the pop. example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg== nullable: true type: string devices: description: 'A list of `id`s of the related `Device`. ' example: - RGV2aWNlOjQy items: type: string type: array facility: description: The pop is located in this `Facility`. example: RmFjaWxpdHk6NDI= type: string id: description: The *primary identifier* of the `Point Of Presence`. example: UG9pbnRPZlByZXNlbmNlOjQy readOnly: true type: string metro_area_network: description: 'The `id` of the related `MetroAreaNetwork`. ' example: TWV0cm9BcmVhTmV0d29yazo0Mg== type: string name: maxLength: 40 type: string required: - id - devices - metro_area_network - facility - name title: PointOfPresence type: object Port: description: Port properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string connection: description: 'The `id` of the related `Connection`. ' example: Q29ubmVjdGlvbjo0Mg== nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string device: description: 'The device the port. ' example: device:29139871 type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `Port`. example: UG9ydDo0Mg== readOnly: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string media_type: description: 'The media type of the port. Query the device''s capabilities for available types. ' example: 10GBASE-LR maxLength: 20 type: string name: default: '' description: Name of the port (set by the exchange) maxLength: 80 readOnly: true type: string operational_state: description: The operational state of the port. enum: - up - down - error type: string pop: description: 'Same as the `pop` of the `device`. ' example: pop:2913 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array speed: minimum: 0 nullable: true readOnly: true type: integer state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - pop - device - media_type - id - role_assignments - billing_account - consuming_account - managing_account - state title: Port type: object PortReservation: description: A PortReservation properties: charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string connection: description: The `Port` will become part of this connection. example: Q29ubmVjdGlvbjo0Mg== type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string exchange_side_demarc: description: 'Exchange side demarc information. This field will only be filled in when the port state is `allocated` or in `production`. Otherwise this field will be `null`.' nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A PortReservation`. example: UG9ydFJlc2VydmF0aW9uOjQy readOnly: true type: string port: description: 'This field will be null, until a port will be allocated.' example: UG9ydDo0Mg== nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string required: - connection - id - state title: PortReservation type: object PortReservationPatch: description: PortReservation Update properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `PortReservation Update`. example: UG9ydFJlc2VydmF0aW9uUGF0Y2g6NDI= readOnly: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string title: PortReservationPatch type: object PortReservationRequest: description: A PortReservation properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string connection: description: A connection is required for port allocation. example: Q29ubmVjdGlvbjo0Mg== type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `A PortReservation`. example: UG9ydFJlc2VydmF0aW9uUmVxdWVzdDo0Mg== readOnly: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string required: - connection - id title: PortReservationRequest type: object PortReservationUpdate: description: PortReservation Update properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: description: The *primary identifier* of the `PortReservation Update`. example: UG9ydFJlc2VydmF0aW9uVXBkYXRlOjQy readOnly: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string required: - id title: PortReservationUpdate type: object PortStatistics: description: Port Statistics properties: aggregates: additionalProperties: $ref: '#/components/schemas/AggregateStatistics' description: 'Aggregated statistics for a connection or service configuration. For the **property name** the string representation of the aggregate interval in ISO8601 period notation is recommended. For example: `PT5M`, `P1D`, `P30D`,`P1Y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: *id001 type: object light_levels_rx: description: 'A list of light levels in **dBm** for each channel. ' example: - -2.92 - -3.89 items: type: number type: array light_levels_tx: description: 'A list of light levels in **dBm** for each channel. ' example: - -5.92 - -5.29 items: type: number type: array required: - light_levels_rx - light_levels_tx - aggregates title: PortStatistics type: object ProblemResponse: description: Encodes a problem into an appropriate response body. properties: detail: description: 'A human-readable explanation specific to this occurrence of the problem.' type: string instance: description: 'A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.' type: string status: description: 'The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.' minimum: 100 type: integer title: description: 'A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4). ' example: Some fields have validation errors. type: string required: - type title: ProblemResponse type: object ProductOffering: description: ProductOffering discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOffering' connection: '#/components/schemas/ConnectionProductOffering' exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOffering' mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOffering' p2mp_vc: '#/components/schemas/P2MPNetworkProductOffering' p2p_vc: '#/components/schemas/P2PNetworkProductOffering' routing_function: '#/components/schemas/RoutingFunctionProductOffering' propertyName: type properties: type: type: string required: - type title: ProductOffering type: object ProductOfferingPatch: description: ProductOfferingPatch discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOfferingPatch' connection: '#/components/schemas/ConnectionProductOfferingPatch' exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOfferingPatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOfferingPatch' p2mp_vc: '#/components/schemas/P2MPNetworkProductOfferingPatch' p2p_vc: '#/components/schemas/P2PNetworkProductOfferingPatch' routing_function: '#/components/schemas/RoutingFunctionProductOfferingPatch' propertyName: type properties: type: type: string required: - type title: ProductOfferingPatch type: object RefreshTokenRequest: description: RefreshTokenRequest properties: refresh_token: type: string required: - refresh_token title: RefreshTokenRequest type: object Role: description: Role for a Contact properties: id: description: The *primary identifier* of the `Role for a Contact`. example: Um9sZTo0Mg== readOnly: true type: string name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - id - required_fields - name title: Role type: object RoleAssignment: description: A role assignment for a contact properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string id: description: The *primary identifier* of the `A role assignment for a contact`. example: Um9sZUFzc2lnbm1lbnQ6NDI= readOnly: true type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - id - contact - role title: RoleAssignment type: object RoleAssignmentPatch: description: A role assignment update properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string title: RoleAssignmentPatch type: object RoleAssignmentRequest: description: A role assignment request properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - contact - role title: RoleAssignmentRequest type: object RoleAssignmentUpdate: description: A role assignemnt update properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - contact - role title: RoleAssignmentUpdate type: object RolePatch: description: Role Update properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array title: RolePatch type: object RoleRequest: description: Create Role properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - required_fields - name title: RoleRequest type: object RoleUpdate: description: Role Update properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - required_fields - name title: RoleUpdate type: object RouteServerNetworkFeature: allOf: - $ref: '#/components/schemas/NetworkFeature' description: Route Server Network Feature properties: address_families: description: 'When creating a route server feature config, remember to specify which address family or families to use: If the route server network feature only supports `af_inet`, then the `as_set_v4` in the network feature config is required. If only `af_inet6` is supported, then the `as_set_v6` is required. If both `af_inet` and `af_inet6` are supported, either `as_set_v4` or `as_set_v6` is required, but both can be provided in the network service config. ' example: - af_inet items: enum: - af_inet - af_inet6 type: string type: array asn: minimum: 0 type: integer available_bgp_session_types: description: 'The route server provides the following session modes. ' example: - passive items: enum: - active - passive type: string type: array flags: description: 'A list of IXP specific feature flags. This can be used to see if e.g. RPKI hard filtering is available.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlag' type: array fqdn: description: 'The FQDN of the route server. ' example: rs1.moon-ix.net maxLength: 80 type: string id: description: The *primary identifier* of the `Route Server Network Feature`. example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZTo0Mg== readOnly: true type: string ip_v4: description: 'IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) notation. This field is only set if the `address_families` include `af_inet`. ' example: 23.42.0.1 type: string ip_v6: description: 'IPv6 address in hexadecimal colon separated notation. This field is only set if the `address_families` include `af_inet6`. ' example: 2001:23:42::1 type: string looking_glass_url: description: 'The url of the looking glass. ' example: https://lg.moon-ix.net/rs1 format: uri type: string name: maxLength: 80 type: string network_service: description: 'The `id` of the related `NetworkService`. ' example: TmV0d29ya1NlcnZpY2U6NDI= type: string nfc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The role assignments is associated with the network feature config through the `role_assignments` list property.' example: - Um9sZTo0Mg== items: type: string readOnly: true type: array required: type: boolean session_mode: description: 'When creating a route server feature config, remember to specify the same session_mode as the route server. ' enum: - public - collector example: public type: string required: - type - available_bgp_session_types - session_mode - address_families - fqdn - asn - flags - nfc_required_contact_roles - network_service - required - name - id title: RouteServerNetworkFeature type: object RouteServerNetworkFeatureConfig: allOf: - $ref: '#/components/schemas/NetworkFeatureConfig' description: Route Server Network Feature Config properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string flags: description: 'A list of IXP specific feature flag configs. This can be used to enable or disable a specific feature flag.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig' type: array id: description: The *primary identifier* of the `Route Server Network Feature Config`. example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZzo0Mg== readOnly: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' example: SXBBZGRyZXNzOjQy type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer network_feature: description: 'The `id` of the related `NetworkFeature`. ' example: TmV0d29ya0ZlYXR1cmU6NDI= type: string network_service_config: description: 'The `id` of the related `NetworkServiceConfig`. ' example: TmV0d29ya1NlcnZpY2VDb25maWc6NDI= type: string password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - type - ip - bgp_session_type - session_mode - asn - role_assignments - network_service_config - network_feature - id - billing_account - consuming_account - managing_account - state title: RouteServerNetworkFeatureConfig type: object RouteServerNetworkFeatureConfigPatch: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigPatch' description: Route Server Network Feature Config Update properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' example: SXBBZGRyZXNzOjQy type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string title: RouteServerNetworkFeatureConfigPatch type: object RouteServerNetworkFeatureConfigRequest: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigRequest' description: Route Server Network Feature Config Request properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string flags: description: 'A list of IXP specific feature flag configs. This can be used to enable or disable a specific feature flag.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig' type: array id: description: The *primary identifier* of the `Route Server Network Feature Config Request`. example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZ1JlcXVlc3Q6NDI= readOnly: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' example: SXBBZGRyZXNzOjQy type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer network_feature: description: 'The `id` of the related `NetworkFeature`. ' example: TmV0d29ya0ZlYXR1cmU6NDI= type: string network_service_config: description: 'The `id` of the related `NetworkServiceConfig`. ' example: TmV0d29ya1NlcnZpY2VDb25maWc6NDI= type: string password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string required: - type - ip - bgp_session_type - session_mode - asn - role_assignments - network_service_config - network_feature - id - billing_account - consuming_account - managing_account title: RouteServerNetworkFeatureConfigRequest type: object RouteServerNetworkFeatureConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigUpdate' description: Route Server Network Feature Config Update properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' example: SXBBZGRyZXNzOjQy type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string required: - type - ip - bgp_session_type - session_mode - asn - consuming_account - managing_account title: RouteServerNetworkFeatureConfigUpdate type: object RoutingFunction: description: Routing Function properties: asn: description: 'Any routing function instance needs to be assigned a 2-byte or 4-byte ASN of the customer''s choice. There is no restriction on private or public ASNs.' type: integer billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The desired upper bound of the capacity for the routing function.' nullable: true type: integer consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The product offering to be used for the routing function.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - asn - product_offering - billing_account - consuming_account - managing_account - state title: RoutingFunction type: object RoutingFunctionPatch: description: Routing Function Patch properties: asn: description: 'Any routing function instance needs to be assigned a 2-byte or 4-byte ASN of the customer''s choice. There is no restriction on private or public ASNs.' type: integer billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The desired upper bound of the capacity for the routing function.' nullable: true type: integer consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The product offering to be used for the routing function.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string title: RoutingFunctionPatch type: object RoutingFunctionProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Routing Function Product Offering properties: bandwidth_max: description: The maximum bandwidth of the routing service in Mbit/s. minimum: 0 type: integer bandwidth_min: description: The minimum bandwidth of the routing service in Mbit/s. minimum: 0 type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Routing Function Product Offering`. example: Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nOjQy readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type - bandwidth_max - bandwidth_min - upgrade_allowed - downgrade_allowed - service_provider - physical_port_speed - handover_metro_area - handover_metro_area_network - resource_type - display_name - name - id title: RoutingFunctionProductOffering type: object RoutingFunctionProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Routing Function Product Offering properties: bandwidth_max: description: The maximum bandwidth of the routing service in Mbit/s. minimum: 0 type: integer bandwidth_min: description: The minimum bandwidth of the routing service in Mbit/s. minimum: 0 type: integer contract_initial_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period for canceling the contract within the initial period. ' example: P1M nullable: true type: string contract_initial_period: description: '_**Format:** ISO8601 Duration_ The initial duration of the contract. The contract will be renewed after this period for the duration of `contract_renewal_period`. ' example: P6M nullable: true type: string contract_renewal_notice_period: description: '_**Format:** ISO8601 Duration_ The notice period denotes the time before the end of the `contract_renewal_period` in which the client has to inform the IXP in order to prevent renewal of the contract. ' example: P2W nullable: true type: string contract_renewal_period: description: '_**Format:** ISO8601 Duration_ The duration for which the contract will be renewed after the initial period. Unless the contract is canceled, it will be automatically renewed after the period. Cancellation has to be done within the `contract_renewal_notice_period`. ' example: P3M type: string contract_terms: description: 'This property informally describe the contract''s notice- and renewal periods as well as additional terms. **Note**: This property contains informal information about the contract. For a structured representation see: `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. **Example**: A contract with the terms _"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period"_ can be represented as: * `contract_initial_period: "P2W"` * `contract_initial_notice_period: "P5D"` * `contract_renewal_period: "P6M"` * `contract_renewal_notice_period: "P1M"` ' example: first 30 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: description: The *primary identifier* of the `Routing Function Product Offering`. example: Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI= readOnly: true type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: '**DEPRECATION NOTICE**: This property will be replaced by `contract_initial_period`, `contract_initial_notice_period`, `contract_renewal_period` and `contract_renewal_notice_period`. The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config - routing_function example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean title: RoutingFunctionProductOfferingPatch type: object RoutingFunctionRequest: description: Routing Function Request properties: asn: description: 'Any routing function instance needs to be assigned a 2-byte or 4-byte ASN of the customer''s choice. There is no restriction on private or public ASNs.' type: integer billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' example: QWNjb3VudDo0Mg== type: string capacity: description: 'The desired upper bound of the capacity for the routing function.' nullable: true type: integer consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: description: 'The product offering to be used for the routing function.' example: UHJvZHVjdE9mZmVyaW5nOjQy type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string required: - asn - product_offering - billing_account - consuming_account - managing_account title: RoutingFunctionRequest type: object SharedStatisticsConfig: description: 'Configure sharing of sensitive statistics with other members of the exchange. Provide a list of account IDs of members who should be able to access certain statistics.' properties: nsc_available_capacity: description: 'A list of acccont IDs who can see `nsc_available_capacity` and `nsc_available_capacity_change_perc` on the `NetworkServiceConfig` statistics. ' example: - '238189294' - '2978418' items: type: string type: array required: - nsc_available_capacity title: SharedStatisticsConfig type: object Status: description: Status Message properties: attrs: description: 'Optional machine readable key value pairs supplementing the message. A custom, detailed or localized error messagen can be presented to the user, derived from the `tag` and `attrs`. ' example: mac: 02:42:23:42:a0:bc type: object message: description: 'A human readable message, describing the problem and may contain hints for resolution. ' example: The peer sent an ARP reply for an IP addresses that has not been assigned to them. type: string severity: description: 'We are using syslog severity levels: 0 = Emergency, 1 = Alert, 2 = Critical, 3 = Error, 4 = Warning, 5 = Notice, 6 = Informational, 7 = Debug. ' example: 2 format: int32 maximum: 7 minimum: 0 type: integer tag: description: 'A machine readable message identifier. ' example: proxy_arp_detected type: string timestamp: description: The time and date when the event occured. format: date-time type: string required: - timestamp - message - tag - severity title: Status type: object VLanConfigDot1Q: allOf: - $ref: '#/components/schemas/VlanConfig' description: A Dot1Q vlan configuration properties: vlan: description: 'A VLAN tag. If `null`, the IXP will auto-select a valid vlan-id. ' example: 23 format: int32 maximum: 4094 minimum: 1 nullable: true type: integer vlan_ethertype: default: '0x8100' description: The ethertype of the vlan in hexadecimal notation. enum: - '0x8100' - '0x88a8' - '0x9100' type: string required: - vlan_type title: VLanConfigDot1Q type: object VLanConfigPort: allOf: - $ref: '#/components/schemas/VlanConfig' description: A Port vlan configuration properties: {} required: - vlan_type title: VLanConfigPort type: object VLanConfigQinQ: allOf: - $ref: '#/components/schemas/VlanConfig' description: A QinQ vlan configuration properties: inner_vlan: description: 'The inner VLAN id. ' example: 200 format: int32 maximum: 4094 minimum: 1 type: integer outer_vlan: description: 'The outer VLAN id. If `null`, the IXP will auto-select a valid vlan-id. ' example: 200 format: int32 maximum: 4094 minimum: 1 nullable: true type: integer outer_vlan_ethertype: default: '0x8100' description: The ethertype of the outer tag in hexadecimal notation. enum: - '0x8100' - '0x88a8' - '0x9100' type: string required: - vlan_type - inner_vlan title: VLanConfigQinQ type: object ValidationErrorProperty: description: A failed validation properties: name: type: string reason: type: string required: - reason - name title: ValidationErrorProperty type: object VlanConfig: description: VlanConfig discriminator: mapping: dot1q: '#/components/schemas/VLanConfigDot1Q' port: '#/components/schemas/VLanConfigPort' qinq: '#/components/schemas/VLanConfigQinQ' propertyName: vlan_type properties: vlan_type: type: string required: - vlan_type title: VlanConfig type: object securitySchemes: Bearer: bearerFormat: JWT scheme: bearer type: http OAuth: description: ' This API uses OAuth 2. We suggest to use the scope: `ix-api` but it is up to the implementers to decide the details. This includes what flows to support. ' flows: authorizationCode: authorizationUrl: https://auth.example-ix/see-implementation-guide scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide clientCredentials: scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide implicit: authorizationUrl: https://auth.example-ix/see-implementation-guide scopes: ix-api: access the IX-API password: scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide type: oauth2 info: contact: url: https://ix-api.net description: ' This API allows to configure/change/delete Internet Exchange services. # Filters When querying collections, the provided query parameters are validated. Unknown query parameters are ignored. Providing invalid filter values should yield a validation error. When multiple filters are provided, the result must match all filters. # Pagination Pagination is an *optional* feature of the IX-API and can be used on every collection endpoint. Use the `api_implementation_read` operation to discover if it is available. Pagination needs to be initiated by the client by providing the `page_limit` query parameter. ### Query Parameters Pagination is controlled using the following query parameters: | Parameter | Description | | ------ | ------ | | `page_offset` | The offset of the first item in the collection. **Default:** `0` | | `page_limit` | The maximum number of items in the response | | `page_token` | **OPTIONAL**: The token from the initial response.
If invalid a `ValidationError` with HTTP status `400` will be returned | ### Paginated Response If the collection is paginated, the HTTP status code of the response will be `206 Partial Content` and pagination metadata is provided in the response headers: | Header | Description | | ------ | ------ | | `X-Pagination-Limit` | Maximum number of items returned | | `X-Pagination-Offset` | Current offset of the first item in the collection | | `X-Pagination-Items` | Total number of items in the collection | | `X-Pagination-Pages` | Total number of pages | | `X-Pagination-Page` | Current page | | `X-Pagination-Token` | An identifier that changes when the collection changes between requests | | `X-Pagination-Next` | Path to the next page of the collection | The `X-Pagination-Token` can be used to check if the result set has changed between requests. If the token has changed, the client may re-query the collection from the beginning, to ensure that no items are missed. If you are tracking changes to the collection, the token can be implemented as a combination of the time of most recent insert or update with the total number of items. The `X-Pagination-Next` header contains the URL path to the next page of the collection, including all other query parameters: `/collection?filter=foo¶m=bar&page_offset=100&page_limit=50&page_token=MTIzMTM5MDEyMDg0NQ==`. The path is relative the API base path (e.g. `/api/v2`). This can be used as a cursor to navigate the collection. # State A lot of resources are stateful, indicated by the presence of a `state` property, to support the inherently asynchronous nature of provisioning, deployment and on-boarding processes. The following table describes the meaning of each state: | State | Meaning | | ------ | ------ | | requested | Resource has been requested by the customer but not yet fully reserved (sub-resources required) | | allocated | All resources required for service are reserved | | testing | The resource is provisioned and is currently being tested | | production | The resource is active and can be used by the customer | | production_change_pending | The resource is active but the customer has requested a change that is awaiting completion | | decommission_requested | The resource is active but the customer has requested disconnection that is awaiting completion | | decommissioned | The resource has been de-provisioned and billing is terminated or scheduled for termination | | archived | The resource was "deleted/purged" and is not listed unless explicitly requested in the filter (i.e. `?state=archived`). | | error | The resource has experienced error during provisioning or after is has been activated | | cancelled | The request for a service was cancelled before provisioning was completed | | operator | Human intervention is needed | | scheduled | The service has been scheduled for provisioning | Please note, that not all implementers _HAVE_ to implement all the listed states. *Sidenote:* If the deleted operation is applied to an object in state `decommissioned` the object will move to state archived. # Sensitive Properties Some properties contain sensitive information and should be redacted when the resource is made available users outside the authorized scope. This is for example the case when an `Account` is flagged as `discoverable`, it becomes available to other API users. In this case only: `id`, `name` and `metro_area_network_presence` should be exposed. If a property is `required` and needs to be redacted, a zero value should be used. For strings this would be an empty string `""`, for numeric values `0` and booleans `false`. Shared resources with sensitive properties: `Account`, `NetworkService` ' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: IX-API version: 2.6.0 openapi: 3.0.0 paths: /account: get: description: Get the currently authenticated `Account`. operationId: account_read responses: 200: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts /accounts: get: description: 'Retrieve a list of `Account`s. This includes all accounts the currently authorized account is managing and the current account itself. Also `discoverable` accounts will be included, however sensitive properties, like `address` or `external_ref` will either not be present or redacted.' operationId: accounts_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by billable in: query name: billable required: false schema: type: integer - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Account' type: array description: 'List of: **Account**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Account' type: array description: 'Paginated List of: **Account**' headers: &id002 X-Pagination-Items: description: Total number of items in the collection schema: type: integer X-Pagination-Limit: description: The maximum number of items returned schema: type: integer X-Pagination-Next: description: Path to the next page in the collection schema: type: string X-Pagination-Offset: description: Current offset of the first item in the collection schema: type: integer X-Pagination-Page: description: Current page schema: type: integer X-Pagination-Pages: description: Total number of pages schema: type: integer X-Pagination-Token: description: An identifier that changes when the collection changes between requests. schema: type: string 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - accounts post: description: Create a new account. operationId: accounts_create requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountRequest' description: '**Account Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - accounts /accounts/{id}: delete: description: 'Accounts can be deleted, when all services and configs are decommissioned or the account is not longer referenced e.g. as a `managing_account` or `billing_account`. Deleting an account will cascade to `contacts` and `role-assignments`. The request will immediately fail, if the above preconditions are not met.' operationId: accounts_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts get: description: Get a single account. operationId: accounts_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts patch: description: Update an account. operationId: accounts_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/AccountPatch' description: '**Account Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update the entire account.' operationId: accounts_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountUpdate' description: '**Account Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: '**Account**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts /auth/refresh: post: description: 'Reauthenticate the API user, issue a new `access_token` and `refresh_token` pair by providing the `refresh_token` in the request body.' operationId: auth_token_refresh requestBody: content: application/json: schema: $ref: '#/components/schemas/RefreshTokenRequest' description: '**RefreshTokenRequest**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/AuthToken' description: '**AuthToken**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html - https://errors.ix-api.net/v2/not-authenticated.html type: string type: object - {} description: Authentication security: [] tags: - auth /auth/token: post: description: 'Authenticate an API user identified by `api_key` and `api_secret`.' operationId: auth_token_create requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthTokenRequest' description: '**AuthTokenRequest**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/AuthToken' description: '**AuthToken**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html - https://errors.ix-api.net/v2/not-authenticated.html type: string type: object - {} description: Authentication security: [] tags: - auth /availability-zones: get: description: List all availability zones available on the platform. operationId: availability_zones_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/AvailabilityZone' type: array description: 'List of: **AvailabilityZone**' 206: content: application/json: schema: items: $ref: '#/components/schemas/AvailabilityZone' type: array description: 'Paginated List of: **AvailabilityZone**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - availability-zones /availability-zones/{id}: get: description: Get a single availability zone by id. operationId: availability_zones_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AvailabilityZone' description: '**AvailabilityZone**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - availability-zones /connections: get: description: List all `connection`s. operationId: connections_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by mode in: query name: mode required: false schema: type: string - description: Filter by mode__is_not in: query name: mode__is_not required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter connections by ID of the metro_area in: query name: metro_area required: false schema: type: string - description: Filter connections by ID of the metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'Filter connections that can be used in a network service config for the service identified by ID' in: query name: supported_network_service required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Connection' type: array description: 'List of: **Connection**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Connection' type: array description: 'Paginated List of: **Connection**' headers: *id002 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//loa` resource. In case the `exchange` is the initiator, the LOA can be uploaded to this resource. Creating a connection will also create PortReservations. See the `port_quantity` and `subscriber_side_demarcs` attributes for details. Please refer to the internet exchange''s api usage guide for implementation specific details.' operationId: connections_create requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionRequest' description: '**Request a new connection**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/Connection' description: '**Connection**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - connections /connections/{id}: delete: description: 'Request decommissioning the connection. The cancellation policy of the connection applies here and is independent from the policy of the network-service and network-service-config using the connection. The connection will assume the state `decommission_requested`. Associated `port-reservation` will be also marked for decommissining and ports will be deallocated. The decommissioning request will *not* cascade to network services and configs.' operationId: connections_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: '**Service Cancellation Request**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: '**Connection**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections get: description: Read a `connection`. operationId: connections_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Connection' description: '**Connection**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections patch: description: Update a connection. operationId: connections_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionPatch' description: '**Connection Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: '**Connection**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a connection.' operationId: connections_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionUpdate' description: '**Connection Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: '**Connection**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: connections_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: '**Cancellation Policy**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/loa: get: description: 'Download the *Letter Of Authorization* associated with the `connection`. In case of a *subscriber initiated cross-connect*, it will be provided by the exchange.' operationId: connections_loa_download parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections post: description: 'Upload a *Letter Of Authorization* for this `connection`. The LOA is valid for the entire connection and must include all ports.' operationId: connections_loa_upload parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization responses: 200: description: The upload was successful 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/statistics: get: description: 'Read a `Connection`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: connections_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Aggregate' description: '**Mapping of Aggregated Statistics**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `Connection`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: connections_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: '**Aggregated Statistics Timeseries**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /contacts: get: description: List available contacts managed by the authorized account. operationId: contacts_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Contact' type: array description: 'List of: **Contact**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Contact' type: array description: 'Paginated List of: **Contact**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - contacts post: description: Create a new contact. operationId: contacts_create requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' description: '**Contact Create Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/Contact' description: '**Contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - contacts /contacts/{id}: delete: description: 'Remove a contact. Please note, that a contact can only be removed if it is not longer in use in a network service or config through a role assignment.' operationId: contacts_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: '**Contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound 409: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 409 title: example: There is a conflict preventing success type: enum: - https://errors.ix-api.net/v2/conflict.html type: string type: object - properties: conflict: items: $ref: '#/components/schemas/Conflict' type: array type: object description: ConstraintViolation tags: - contacts get: description: Get a contact by it's id operationId: contacts_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: '**Contact**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts patch: description: Update a contact. operationId: contacts_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/ContactPatch' description: '**Contact Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: '**Contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a contact.' operationId: contacts_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactUpdate' description: '**Contact Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: '**Contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts /devices: get: description: List available devices operationId: devices_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed_lt in: query name: capability_speed_lt required: false schema: type: integer - description: Filter by capability_speed_lte in: query name: capability_speed_lte required: false schema: type: integer - description: Filter by capability_speed_gt in: query name: capability_speed_gt required: false schema: type: integer - description: Filter by capability_speed_gte in: query name: capability_speed_gte required: false schema: type: integer - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Device' type: array description: 'List of: **Device**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Device' type: array description: 'Paginated List of: **Device**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - devices /devices/{id}: get: description: Get a specific device identified by id operationId: devices_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Device' description: '**Device**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - devices /extensions: get: description: List provider extensions to the IX-API. operationId: api_extensions_list parameters: - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/ApiExtension' type: array description: 'List of: **Implementation specific API extensions**' 206: content: application/json: schema: items: $ref: '#/components/schemas/ApiExtension' type: array description: 'Paginated List of: **Implementation specific API extensions**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError tags: - extensions /facilities: get: description: Get a (filtered) list of `facilities`. operationId: facilities_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed_lt in: query name: capability_speed_lt required: false schema: type: integer - description: Filter by capability_speed_lte in: query name: capability_speed_lte required: false schema: type: integer - description: Filter by capability_speed_gt in: query name: capability_speed_gt required: false schema: type: integer - description: Filter by capability_speed_gte in: query name: capability_speed_gte required: false schema: type: integer - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by organisation_name in: query name: organisation_name required: false schema: type: string - description: Filter by metro_area in: query name: metro_area required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by address_country in: query name: address_country required: false schema: type: string - description: Filter by address_locality in: query name: address_locality required: false schema: type: string - description: Filter by postal_code in: query name: postal_code required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Facility' type: array description: 'List of: **Facility**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Facility' type: array description: 'Paginated List of: **Facility**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - facilities /facilities/{id}: get: description: Retrieve a facility by id operationId: facilities_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Facility' description: '**Facility**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - facilities /health: get: description: Get the IX-API service health status. operationId: api_health_read responses: 200: content: application/json: schema: $ref: '#/components/schemas/ApiHealth' description: '**Health Status Response**' tags: - health /implementation: get: description: Get the API implementation details. operationId: api_implementation_read responses: 200: content: application/json: schema: $ref: '#/components/schemas/ApiImplementation' description: '**API Implementation**' tags: - implementation /ips: get: description: List all ip addresses (and prefixes). operationId: ips_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by network_service_config in: query name: network_service_config required: false schema: type: string - description: Filter by network_feature in: query name: network_feature required: false schema: type: string - description: Filter by network_feature_config in: query name: network_feature_config required: false schema: type: string - description: Filter by version in: query name: version required: false schema: type: integer - description: Filter by fqdn in: query name: fqdn required: false schema: type: string - description: Filter by prefix_length in: query name: prefix_length required: false schema: type: integer - description: Filter by valid_not_before in: query name: valid_not_before required: false schema: type: string - description: Filter by valid_not_after in: query name: valid_not_after required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/IpAddress' type: array description: 'List of: **IP-Address**' 206: content: application/json: schema: items: $ref: '#/components/schemas/IpAddress' type: array description: 'Paginated List of: **IP-Address**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - ips post: description: Add an ip host address or network prefix. operationId: ips_create requestBody: content: application/json: schema: $ref: '#/components/schemas/IpAddressRequest' description: '**IP-Address / Prefix allocation Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: '**IP-Address**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - ips /ips/{id}: get: description: Get a single ip addresses by it's id. operationId: ips_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: '**IP-Address**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips patch: description: 'Update an ip address. You can only update IP addresses within your current scope. Not all addresses you can read you can update. If the ip address was allocated for you, you might not be able to change anything but the `fqdn`.' operationId: ips_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/IpAddressPatch' description: '**IP-Address Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: '**IP-Address**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update an ip address object. You can only update IP addresses within your current scope. Not all addresses you can read you can update. If the ip address was allocated for you, you might not be able to change anything but the `fqdn`.' operationId: ips_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/IpAddressUpdate' description: '**IP-Address Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: '**IP-Address**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips /macs: get: description: List all mac addresses managed by the authorized customer. operationId: macs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service_config in: query name: network_service_config required: false schema: type: string - description: Filter by address in: query name: address required: false schema: type: string - description: Filter by valid_not_before in: query name: valid_not_before required: false schema: type: string - description: Filter by valid_not_after in: query name: valid_not_after required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MacAddress' type: array description: 'List of: **MAC-Address**' 206: content: application/json: schema: items: $ref: '#/components/schemas/MacAddress' type: array description: 'Paginated List of: **MAC-Address**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs post: description: Register a mac address. operationId: macs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MacAddressRequest' description: '**MAC-Address Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: '**MAC-Address**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs /macs/{id}: delete: description: Remove a mac address. operationId: macs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: '**MAC-Address**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs get: description: Get a single mac address by it's id. operationId: macs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: '**MAC-Address**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs /member-joining-rules: get: description: Get a list of joining rules operationId: member_joining_rules_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service in: query name: network_service required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MemberJoiningRule' type: array description: 'List of: **Polymorphic Member Joining Rule**' 206: content: application/json: schema: items: $ref: '#/components/schemas/MemberJoiningRule' type: array description: 'Paginated List of: **Polymorphic Member Joining Rule**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules post: description: Create a member joining rule operationId: member_joining_rules_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRuleRequest' description: '**Polymorphic Member Joining Rule Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: '**Polymorphic Member Joining Rule**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules /member-joining-rules/{id}: delete: description: Delete a joining rule operationId: member_joining_rules_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: '**Polymorphic Member Joining Rule**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules get: description: Get a single rule operationId: member_joining_rules_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: '**Polymorphic Member Joining Rule**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules patch: description: Update a joining rule operationId: member_joining_rules_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/MemberJoiningRulePatch' description: '**Polymorphic Member Joining Rule Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: '**Polymorphic Member Joining Rule**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a joining rule.' operationId: member_joining_rules_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: '**Polymorphic Member Joining Rule Update**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: '**Polymorphic Member Joining Rule**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules /metro-area-networks: get: description: List all MetroAreaNetworks operationId: metro_area_networks_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by metro_area in: query name: metro_area required: false schema: type: string - description: Filter by service_provider in: query name: service_provider required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MetroAreaNetwork' type: array description: 'List of: **MetroAreaNetwork**' 206: content: application/json: schema: items: $ref: '#/components/schemas/MetroAreaNetwork' type: array description: 'Paginated List of: **MetroAreaNetwork**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - metro-area-networks /metro-area-networks/{id}: get: description: Retrieve a MetroAreaNetwork operationId: metro_area_networks_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MetroAreaNetwork' description: '**MetroAreaNetwork**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - metro-area-networks /metro-areas: get: description: List all MetroAreas operationId: metro_areas_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MetroArea' type: array description: 'List of: **MetroArea**' 206: content: application/json: schema: items: $ref: '#/components/schemas/MetroArea' type: array description: 'Paginated List of: **MetroArea**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - metro-areas /metro-areas/{id}: get: description: Get a single MetroArea operationId: metro_areas_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MetroArea' description: '**MetroArea**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - metro-areas /network-feature-configs: get: description: Get all network feature configs. operationId: network_feature_configs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - route_server type: string - description: 'Filter by the id of the NetworkServiceConfig the feature configuration is related to. **DEPRECATION NOTICE**: Use `network_service_config` instead.' in: query name: service_config required: false schema: type: string - description: 'Filter by the id of the NetworkServiceConfig the feature configuration is related to.' in: query name: network_service_config required: false schema: type: string - description: Filter by network_feature in: query name: network_feature required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeatureConfig' type: array description: 'List of: **Polymorphic Network Feature Config**' 206: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeatureConfig' type: array description: 'Paginated List of: **Polymorphic Network Feature Config**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-feature-configs post: description: 'Create a configuration for a `NetworkFeature` defined in the `NetworkFeature`s collection.' operationId: network_feature_configs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfigRequest' description: '**Polymorphic Network Feature Config Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: '**Polymorphic Network Feature Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-feature-configs /network-feature-configs/{id}: delete: description: 'Remove a network feature config. The network feature config will be marked as `decommission_requested`. Decommissioning a network feature config will not cascade to related services or service configs.' operationId: network_feature_configs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: '**Polymorphic Network Feature Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs get: description: Get a single network feature config. operationId: network_feature_configs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: '**Polymorphic Network Feature Config**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs patch: description: Update a network feature configuration. operationId: network_feature_configs_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkFeatureConfigPatch' description: '**Polymorphic Network Feauture Config Patch**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: '**Polymorphic Network Feature Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a network feature configuration' operationId: network_feature_configs_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfigUpdate' description: '**Polymorphic Network Feauture Config Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: '**Polymorphic Network Feature Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs /network-features: get: description: List available network features. operationId: network_features_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - route_server type: string - description: Filter by required in: query name: required required: false schema: type: string - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeature' type: array description: 'List of: **Polymorphic Network Feature**' 206: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeature' type: array description: 'Paginated List of: **Polymorphic Network Feature**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-features /network-features/{id}: get: description: Get a single network feature by it's id. operationId: network_features_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkFeature' description: '**Polymorphic Network Feature**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-features /network-service-configs: get: description: Get all `network-service-config`s. operationId: network_service_configs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - exchange_lan - p2p_vc - p2mp_vc - mp2mp_vc - cloud_vc type: string - description: Filter by inner_vlan in: query name: inner_vlan required: false schema: type: integer - description: Filter by outer_vlan in: query name: outer_vlan required: false schema: type: integer - description: Filter by capacity in: query name: capacity required: false schema: type: integer - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string - description: Filter by product_offering in: query name: product_offering required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkServiceConfig' type: array description: 'List of: **Polymorphic Network Service Config**' 206: content: application/json: schema: items: $ref: '#/components/schemas/NetworkServiceConfig' type: array description: 'Paginated List of: **Polymorphic Network Service Config**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-service-configs post: description: Create a `network-service-config`. operationId: network_service_configs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfigRequest' description: '**Polymorhic Network Service Config Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: '**Polymorphic Network Service Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-service-configs /network-service-configs/{id}: delete: description: 'Request decommissioning the network service configuration. The network service config will assume the state `decommission_requested`. This will cascade to related resources like `network-feature-configs`.' operationId: network_service_configs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: '**Service Cancellation Request**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: '**Polymorphic Network Service Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs get: description: Get a `network-service-config` operationId: network_service_configs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: '**Polymorphic Network Service Config**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs patch: description: Update an exisiting `network-service-config`. operationId: network_service_configs_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkServiceConfigPatch' description: '**Polymorphic Network Service Config**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: '**Polymorphic Network Service Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update an exisiting `network-service-config`' operationId: network_service_configs_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: '**Polymorphic Network Service Config**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: '**Polymorphic Network Service Config**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: network_service_config_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: '**Cancellation Policy**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/peer-statistics: get: description: "Read the aggregated peer to peer statistics in relation\n \ \ to the peer represented by the `NetworkServiceConfig`.\n\nThis operation\ \ will return a list of aggregated statistics.\n\nA `start` and `end` query\ \ parameter can be used to\nretrieve the aggregated traffic for a given window.\n\ In this case the key of the returned statistics is `custom`.\n\nWith a given\ \ `start` and `end` window, the resolution for\nthe aggregated data is chosen\ \ by the implementation.\n\nYou need to check the `accuracy` attribute of\ \ the aggregate,\nto see if the data can be used for the desired\nusecase.\ \ The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\ \nIf no `start` or `end` parameter is given, a sliding window\nis assumed\ \ and key value pairs of resolutions and aggregated\nstatistics are returned." operationId: network_service_configs_peer_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string - description: Filter by asn in: query name: asn required: false schema: type: integer - description: Filter by mac_address in: query name: mac_address required: false schema: type: string - description: Filter by ip_address in: query name: ip_address required: false schema: type: string - description: Filter by ip_version in: query name: ip_version required: false schema: type: integer responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PeerAggregate' type: array description: 'List of: **PeerStatistics**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/peer-statistics/{aggregate}/timeseries: get: description: 'Read peer to peer aggregated timeseries. The resolution is defined by the aggregate. This operation will return a list of timeseries for each peer.' operationId: network_service_configs_peer_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string - description: Filter by asn in: query name: asn required: false schema: type: integer - description: Filter by mac_address in: query name: mac_address required: false schema: type: string - description: Filter by ip_address in: query name: ip_address required: false schema: type: string - description: Filter by ip_version in: query name: ip_version required: false schema: type: integer responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PeerTimeseries' type: array description: 'List of: **PeerStatistics Timeseries**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/statistics: get: description: 'Read the aggregated statistics of a `NetworkServiceConfig`. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: network_service_configs_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfigAggregate' description: '**Statistics for NetworkServiceConfig**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `NetworkServiceConfig`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: network_service_configs_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: '**Aggregated Statistics Timeseries**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-services: get: description: List available `NetworkService`s. operationId: network_services_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - exchange_lan - p2p_vc - p2mp_vc - mp2mp_vc - cloud_vc type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by product_offering in: query name: product_offering required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkService' type: array description: 'List of: **Polymorphic Network Services**' 206: content: application/json: schema: items: $ref: '#/components/schemas/NetworkService' type: array description: 'Paginated List of: **Polymorphic Network Services**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services post: description: Create a new network service operationId: network_services_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceRequest' description: '**Polymorphic Network Service Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: '**Polymorphic Network Services**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services /network-services/{id}: delete: description: 'Request decomissioning of the network service. The network service will enter the state of `decommission_requested`. The request will cascade to related network service and feature configs. An *optional request body* can be provided to request a specific service termination date. If no date is given in the request body, it is assumed to be the earliest possible date. Possible values for `decommission_at` can be queried through the `network_service_cancellation_policy_read` operation. The response will contain the dates on which the changes will be effected.' operationId: network_services_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: '**Service Cancellation Request**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: '**Polymorphic Network Services**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services get: description: Get a specific `network-service` by id. operationId: network_services_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: '**Polymorphic Network Services**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services patch: description: Update a network service operationId: network_services_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkServicePatch' description: '**Polymorphic Network Service Patch**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: '**Polymorphic Network Services**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a network service.' operationId: network_services_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceUpdate' description: '**Polymorphic Network Service Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: '**Polymorphic Network Services**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my service, *when will it be technically decommissioned*? If I cancel my service, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: network_service_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: '**Cancellation Policy**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/change-request: delete: description: Retract or reject a change to the network service. operationId: network_service_change_request_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: '**NetworkServiceChangeRequest**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services get: description: Get the change request. operationId: network_service_change_request_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: '**NetworkServiceChangeRequest**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services post: description: 'Request a change to the network service. The B-side participant in a peer-to-peer network service (`p2p_vc`) can issue a change request, expressing a desired change in the capacity. The change is accepted when the A-side has configured the network service and config with the new bandwidth. This is done using the `network_service_update`, `network_service_partial_update`, `network_service_config_update` or `network_service_config_partial_update` operations by the A-side. These changes can sometimes require a change of the product offering. The product offering may only differ in bandwidth. The network service will change its state from `production` into `production_change_pending`. A change can by rejected (by the A-side) or retracted (by the B-side) using the `network_service_change_request_destroy` operation. Only one change request may be issued at a time. A change request by the A-side is not a valid request and will be rejected.' operationId: network_service_change_request_create parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: '**NetworkServiceChangeRequest**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: '**NetworkServiceChangeRequest**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services /network-services/{id}/statistics: get: description: 'Read a `NetworkService`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: network_services_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Aggregate' description: '**Mapping of Aggregated Statistics**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `NetworkService`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: network_services_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: '**Aggregated Statistics Timeseries**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /pops: get: description: List all PoPs operationId: pops_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed_lt in: query name: capability_speed_lt required: false schema: type: integer - description: Filter by capability_speed_lte in: query name: capability_speed_lte required: false schema: type: integer - description: Filter by capability_speed_gt in: query name: capability_speed_gt required: false schema: type: integer - description: Filter by capability_speed_gte in: query name: capability_speed_gte required: false schema: type: integer responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PointOfPresence' type: array description: 'List of: **Point Of Presence**' 206: content: application/json: schema: items: $ref: '#/components/schemas/PointOfPresence' type: array description: 'Paginated List of: **Point Of Presence**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - pops /pops/{id}: get: description: Get a single point of presence operationId: pops_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PointOfPresence' description: '**Point Of Presence**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - pops /port-reservations: get: description: List all port reservations. operationId: port_reservations_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string - description: Filter by port in: query name: port required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PortReservation' type: array description: 'List of: **A PortReservation**' 206: content: application/json: schema: items: $ref: '#/components/schemas/PortReservation' type: array description: 'Paginated List of: **A PortReservation**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - port-reservations post: description: 'Create a new `PortReservation`. Two workflows for allocating ports is supported and dependent on the `cross_connect_initiator` property of the corresponding `product-offering`: Individual LOAs can be uploaded and downloaded for each PortAllocation using the endpoint `/port-reservations/{id}/loa`. Please refer to the internet exchange''s api usage guide for implementation specific details.' operationId: port_reservations_create requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationRequest' description: '**A PortReservation**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: '**A PortReservation**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - port-reservations /port-reservations/{id}: delete: description: 'Request decommissioning the port-reservation. The associated `port` will be deallocated and removed from the `connection`.' operationId: port_reservations_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: '**Service Cancellation Request**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: '**A PortReservation**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations get: description: Retrieve a `PortReservation`. operationId: port_reservations_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: '**A PortReservation**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations patch: description: Update a port reservation. operationId: port_reservations_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationPatch' description: '**PortReservation Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: '**A PortReservation**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations put: description: '**DEPRECATION NOTICE**: This operation will be removed in favor of using `PATCH` for all updates. Update a port reservation.' operationId: port_reservations_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationUpdate' description: '**PortReservation Update**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: '**A PortReservation**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /port-reservations/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: port_reservation_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: '**Cancellation Policy**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /port-reservations/{id}/loa: get: description: 'Download the *Letter Of Authorization* associated with the port-reservation. In case of a *subscriber initiated cross-connect*, it will be provided by the exchange.' operationId: port_reservations_loa_download parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations post: description: 'Upload a *Letter Of Authorization* for this `PortReservation`.' operationId: port_reservations_loa_upload parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization responses: 200: description: The upload was successful 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /ports: get: description: List all ports. operationId: ports_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by media_type in: query name: media_type required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by device in: query name: device required: false schema: type: string - description: Filter by speed in: query name: speed required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Port' type: array description: 'List of: **Port**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Port' type: array description: 'Paginated List of: **Port**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - ports /ports/{id}: get: description: Retrieve a port. operationId: ports_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Port' description: '**Port**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /ports/{id}/statistics: get: description: 'Read a `Port`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: ports_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PortStatistics' description: '**Port Statistics**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /ports/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `Port`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: ports_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: '**Aggregated Statistics Timeseries**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /product-offerings: get: description: List all (filtered) products-offerings available on the platform operationId: product_offerings_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - connection - exchange_lan - p2p_vc - mp2mp_vc - p2mp_vc - cloud_vc - routing_function type: string - description: Filter by resource_type in: query name: resource_type required: false schema: enum: - connection - port_reservation - network_service - network_service_config - routing_function type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by handover_metro_area in: query name: handover_metro_area required: false schema: type: string - description: Filter by handover_metro_area_network in: query name: handover_metro_area_network required: false schema: type: string - description: Filter by handover_pop in: query name: handover_pop required: false schema: type: string - description: Filter by service_metro_area in: query name: service_metro_area required: false schema: type: string - description: Filter by service_metro_area_network in: query name: service_metro_area_network required: false schema: type: string - description: Filter by service_provider in: query name: service_provider required: false schema: type: string - description: Filter by downgrade_allowed in: query name: downgrade_allowed required: false schema: enum: - 'true' - 'false' type: string - description: Filter by upgrade_allowed in: query name: upgrade_allowed required: false schema: enum: - 'true' - 'false' type: string - description: 'Find product offerings where bandwidth is within the range of `bandwidth_min` and `bandwidth_max`.' in: query name: bandwidth required: false schema: type: integer - description: Filter by physical_port_speed in: query name: physical_port_speed required: false schema: type: integer - description: Filter by service_provider_region in: query name: service_provider_region required: false schema: type: string - description: Filter by service_provider_pop in: query name: service_provider_pop required: false schema: type: string - description: Filter by delivery_method in: query name: delivery_method required: false schema: enum: - dedicated - shared type: string - description: 'For product offerings of type `cloud_vc`, if the `service_provider_workflow` is `provider_first` the `cloud_key` will be used for filtering the relevant offerings.' in: query name: cloud_key required: false schema: type: string - description: Filter by contract_initial_period in: query name: contract_initial_period required: false schema: type: string - description: Filter by contract_initial_notice_period in: query name: contract_initial_notice_period required: false schema: type: string - description: Filter by contract_renewal_period in: query name: contract_renewal_period required: false schema: type: string - description: Filter by contract_renewal_notice_period in: query name: contract_renewal_notice_period required: false schema: type: string - description: 'Returned objects only have properties which are present in the list of fields. The required `type` property is *implicitly* included. The results are *deduplicated*. ' example: handover_metro_area,service_provider in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/ProductOfferingPatch' type: array description: 'List of: **Polymorphic Product Offering**' 206: content: application/json: schema: items: $ref: '#/components/schemas/ProductOfferingPatch' type: array description: 'Paginated List of: **Polymorphic Product Offering**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - product-offerings /product-offerings/{id}: get: description: Get a single products-offering by id. operationId: product_offerings_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/ProductOffering' description: '**Polymorphic Product Offering**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - product-offerings /role-assignments: get: description: List all role assignments for a contact. operationId: role_assignments_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by contact in: query name: contact required: false schema: type: string - description: Filter by role in: query name: role required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/RoleAssignment' type: array description: 'List of: **A role assignment for a contact**' 206: content: application/json: schema: items: $ref: '#/components/schemas/RoleAssignment' type: array description: 'Paginated List of: **A role assignment for a contact**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - role-assignments post: description: 'Assign a `Role` to a `Contact`. The contact needs to have all fields filled, which the role requires. If this is not the case a `400` `UnableToFulfill` will be returned.' operationId: role_assignments_create requestBody: content: application/json: schema: $ref: '#/components/schemas/RoleAssignmentRequest' description: '**A role assignment request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: '**A role assignment for a contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - role-assignments /role-assignments/{id}: delete: description: 'Remove a role assignment from a contact. If the contact is still in use with a given role required, this will yield an `UnableToFulfill` error.' operationId: role_assignments_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: '**A role assignment for a contact**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound 409: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 409 title: example: There is a conflict preventing success type: enum: - https://errors.ix-api.net/v2/conflict.html type: string type: object - properties: conflict: items: $ref: '#/components/schemas/Conflict' type: array type: object description: ConstraintViolation tags: - role-assignments get: description: Get a role assignment for a contact. operationId: role_assignments_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: '**A role assignment for a contact**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - role-assignments /roles: get: description: List all roles available. operationId: roles_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by contact in: query name: contact required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Role' type: array description: 'List of: **Role for a Contact**' 206: content: application/json: schema: items: $ref: '#/components/schemas/Role' type: array description: 'Paginated List of: **Role for a Contact**' headers: *id002 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - roles /roles/{id}: get: description: Get a single `Role`. operationId: roles_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Role' description: '**Role for a Contact**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication tags: - roles /routing-functions: get: description: Get a list of routing functions operationId: routing_functions_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: 'The maximum number of items in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_limit required: false schema: type: integer - description: 'The offset of the first item in the response. [*(Pagination)*](#section/Pagination)' in: query name: page_offset required: false schema: type: integer - description: 'The pagination token from the initial response. [*(Pagination)*](#section/Pagination)' in: query name: page_token required: false schema: type: string - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by the ID of the managing [account](#tag/accounts). in: query name: managing_account required: false schema: type: string - description: Filter by the ID of the consuming [account](#tag/accounts). in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by asn in: query name: asn required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/RoutingFunction' type: array description: 'List of: **Routing Function**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - routing-functions post: description: Create a routing function operationId: routing_functions_create requestBody: content: application/json: schema: $ref: '#/components/schemas/RoutingFunctionRequest' description: '**Routing Function Request**' responses: 201: content: application/json: schema: $ref: '#/components/schemas/RoutingFunction' description: '**Routing Function**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - routing-functions /routing-functions/{id}: delete: description: 'Request decomissioning the routing function. The cancellation policy of the routing function applies here and is independent from the policy of the network-service and network-service-config using the routing function. The routing function will assume the state `decommission_requested`. The decommissioning request will *not* cascade to network services and configs.' operationId: routing_functions_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: '**Service Cancellation Request**' responses: 202: content: application/json: schema: $ref: '#/components/schemas/RoutingFunction' description: '**Routing Function**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - routing-functions get: description: Get a single routing function instance. operationId: routing_functions_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoutingFunction' description: '**Routing Function**' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - routing-functions patch: description: Update a routing function operationId: routing_functions_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/RoutingFunctionPatch' description: '**Routing Function Patch**' responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoutingFunction' description: '**Routing Function**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - routing-functions /routing-functions/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: routing_functions_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: '**Cancellation Policy**' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - routing-functions security: - OAuth: - ix-api - Bearer: [] servers: - url: /api/v2 tags: - description: 'An `Account` represents an individual customer account, organization or partner involved with the IXP. They are used to consume services from an IXP. Accounts can have a hierarchy, i.e. an account can have sub-accounts. The max-depth of the account-hierarchy may vary by implementer, but it''s safe to assume an account can have sub-accounts. Each `Account` has a state. Only `Account`s in state `production` or `production_change_pending` are ready to consume services. There are `Contact`s associated with each account. Contacts can be assigned for `Role`s via `RoleAssignment`s. Depending on the IXP and the services the account wants to use, contacts with specific roles may be required. A contact with role `legal` is mandatory for an account to become operational. Only accounts with `billing_information` present can be used as a `billing_account`. *Sensitive Properties*: Please note, that an `Account` is a shared resource and fields marked as *sensitive* should be redacted.' name: accounts - description: '**DEPRECATION NOTICE:** Providing the method of authentication is up to the implementer. We suggest using OAuth 2. Open an authorized session with the IX-API. This is equivalent to a ''login'' endpoint. Upon success, you will receive an `access_token` and a `refreh_token`. Both are JWTs and have limited lifetimes. You can get information like their expiry time directly by parsing the tokens. Use the `access_token` as `Bearer` in your `Authorization` header for getting access to the API. When the session (i.e. the `access_token`) expires, use the `refresh_token` (if it''s not yet expired) with the `refresh`-endpoint to reauthenticate and get a fresh `access_token`.' name: auth - description: 'An `AvailabilityZone` is a grouping of network resources that have the same maintenance scheduling which does not overlap with the maintenance schedule for any other `AvailabilityZone`.' name: availability-zones - description: 'A `Connection` is a functional group of physical ports collected together into a LAG (aka trunk). A `connection` with only one `port` can be also configured as standalone which means no link aggregation is configured on the switch. Ports will be allocated when creating a connection. The number of ports is determined by the `port_quantity` property. The `port_quantity` can be updated later by creating new or deleting `PortReservation`s for this `Connection`.' name: connections - description: 'A `Contact` is a role undertaking a specific responsibility within an account, typically a department or agent of the customer company. `Contact`s are assigned multiple roles by `RoleAssignment`s. A contact is bound to the account by the `consuming_account` property.' name: contacts - description: 'A `Device` is a network hardware device, typically a switch, which is located at a specified facility and inside a `PointOfPresence`. PoPs. They may be physically located at their related PoPs.' name: devices - description: 'The extensions endpoint provides information about additional implementation specific extensions that are not officially part of the IX-API standard.' name: extensions - description: 'A `Facility` is a data centre, with a determined physical address, from which a defined set of PoPs can be accessed' name: facilities - description: 'This endpoint provides a health status response implementing https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html The schema describes the toplevel fields - however the implementation of health checks is up to the IX-API implementor.' name: health - description: 'This endpoint provides information about the IX-API implementation of the exchange. You can find the implemented schema version and supported types and operations here.' name: implementation - description: 'An `IP` is a IPv4 or 6 addresses, with a given validity period. Some services require IP addresses to work. When you are joining an `exchange_lan` network service for example, addresses on the peering lan will be assigned to you.' name: ips - description: 'A `MAC` is a MAC addresses with a given validity period. Some services require MAC addresses to work. Please note that only *unicast* MAC addresses are allowed. You are not alllowed to use multicast or broadcast addresses. The address itself can not be updated after creation. However: It can be expired by changing the `valid_not_before` and `valid_not_after` properties. Setting the above two parameters supports maintenance windows in which the MAC addresses overlap for certain period of time. The implementation of the maintenance windows is dependent on the specific exchange. While some IXPs allow them, the business of other IXPs may reject them. If both values are set `valid_not_after` may not be before `valid_not_before`.' name: macs - description: 'A `MemberJoiningRule` defines a rule to allow or deny access for an `Account` to a access a `NetworkService`. Furthermore, some `NetworkService`s may only be visible if the querying account is listed in an allow rule.' name: member-joining-rules - description: 'Services are provided directly on or can be consumed from inside a `MetroAreaNetwork`. Accounts can indicate their presence in a `MetroAreaNetwork` to others by adding a list of ids.' name: metro-area-networks - description: 'A MetroArea exists if a `MetroAreaNetwork` or `Facility` is present in it.' name: metro-areas - description: 'A `NetworkFeatureConfig` is a configuration for using a `NetworkFeature`. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-feature-configs - description: 'A `NetworkFeature` represents additional funcationality of a single `NetworkService`. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-features - description: 'A `NetworkServiceConfig` is a customer''s configuration for usage of a `NetworkService`, e.g. the configuration of a (subset of a) connection for that customer''s traffic The `type` of the config determines the service you are configuring. You can find the services available to you on the platform, by querying the `NetworkService`s resource. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig` needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-service-configs - description: 'A `NetworkService` represents an instance of a `ProductOffering`. The exchange lan is a special case in which the `NetworkService` is managed by the exchange. All other `NetworkService`s are created and managed by an `Account`. *Sensitive Properties*: Please note, that a `NetworkService` may be a shared resource and fields marked as *sensitive* should be redacted.' name: network-services - description: 'A `PointOfPresence` is a technical installation within a Facility which is connected to a single `MetroAreaNetwork`. A single `MetroAreaNetwork`, however, may have multiple `PointOfPresence`s.' name: pops - description: 'A `PortReservation` expresses the intent to include a `Port` in a connection. Decommissining a `port-reservation` will lead to the removal of the port from the lag. Please note that individual cancellation policies might apply.' name: port-reservations - description: 'A `Port` is the point at which subscriber and IXP networks meet. A port is always associated with a `device` and `pop`, has a `speed` and a `media_type`.' name: ports - description: 'A `ProductOffering` is an offer made by an exchange to be consumed by a client.' name: product-offerings - description: A `Contact` can be assigned to many `Roles`. name: role-assignments - description: 'A `Role` enables a `Contact` to act for a specific purpose. ### Well-defined roles - `legal` signing terms and conditions for the account as a whole, authorized person allowed to sign on behalf of the company - `implementation` technical contact for deployment and de-commissioning - `noc` technical contact for troubleshooting the services - `peering` contact authorized to accept peering requests - `billing` contact that receives invoices An implementer may choose to support them or not or may add additional ones.' name: roles - description: 'Routing functions instances add routing functionality implemented as VPRNs at the IXP. A routing function instance joins two or more independent services into a single routing domain, providing connectivity between all of the services attached. To create routing function, need to select a product offering, which will determine the service metro area network where the function will be deployed.' name: routing-functions