components: schemas: Account: description: Account properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string id: maxLength: 80 type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - name - metro_area_network_presence - id title: Account type: object AccountPatch: description: Account Update properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string title: AccountPatch type: object AccountRequest: description: Account Request properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: default: [] description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string required: - name - address title: AccountRequest type: object AccountUpdate: description: Account Update properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)*' example: IX:Service:23042 maxLength: 80 nullable: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. *(Sensitive Property)* ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. *(Sensitive Property)* ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string required: - name - metro_area_network_presence - address title: AccountUpdate type: object Address: description: A postal address. *(Sensitive Property)* properties: country: description: ISO 3166-1 alpha-2 country code, for example DE example: US maxLength: 2 type: string locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 40 type: string post_office_box_number: description: The post office box number for PO box addresses. example: '2335232' maxLength: 80 nullable: true type: string postal_code: description: A postal code. For example, 9404 example: '9409' maxLength: 24 type: string region: description: The region. For example, CA example: CA maxLength: 80 nullable: true type: string street_address: description: The street address. For example, 1600 Amphitheatre Pkwy. example: 1600 Amphitheatre Pkwy. maxLength: 80 type: string required: - country - locality - postal_code - street_address title: Address type: object Aggregate: description: Mapping of Aggregated Statistics properties: aggregates: additionalProperties: $ref: '#/components/schemas/AggregateStatistics' description: 'Aggregated statistics for a connection or service configuration For the **property name** the aggregate interval as a string representation is used. For example: `5m`, `1d`, `30d`, `1y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: &id001 30d: average_ops_in: 1734882240 average_ops_out: 173220 average_pps_in: 1730224 average_pps_out: 17456 created_at: '2019-08-24T14:15:22Z' next_update_at: '2019-08-24T14:15:22Z' precision: 3600 title: 30 Days total_samples: 720 5m: average_ops_in: 1734882240 average_ops_out: 173220 average_pps_in: 1730224 average_pps_out: 17456 created_at: '2019-08-24T14:15:22Z' next_update_at: '2019-08-24T14:15:22Z' precision: 300 title: 5 Minutes total_samples: 1 type: object required: - aggregates title: Aggregate type: object AggregateStatistics: description: Statistics properties: accuracy: description: 'The accuracy is the ratio of *total aggregated samples* to *expected samples*. The expected number of samples is the size of the window of the aggregate, divided by the aggregation resolution. For example: A window of `24 h` with an aggregation resolution of `5 m` would yield `288` samples. If only `275` samples are available for aggregation, the accuracy would be `0.95`. ' example: 0.95 maximum: 1.0 minimum: 0.0 type: number average_dps_in: description: 'Average **discards per second** inbound. ' example: 0.01 minimum: 0 type: number average_dps_out: description: 'Averages **discards per second** outbound. ' example: 0.12 minimum: 0 type: number average_eps_in: description: 'Average **errors per second** inbound. ' example: 0.32 minimum: 0 type: number average_eps_out: description: 'Averages **errors per second** outbound. ' example: 0.01 minimum: 0 type: number average_ops_in: description: 'Average inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer average_ops_out: description: 'Average outbound **octets per second**. ' example: 173220 minimum: 0 type: integer average_pps_in: description: 'Average number of inbound **packets per second**. ' example: 1730224 minimum: 0 type: integer average_pps_out: description: 'Average number outbound **packets per second**. ' example: 17456 minimum: 0 type: integer created_at: description: Timestamp when the statistics were created. format: date-time type: string end: description: End of the traffic aggregation. format: date-time type: string maximum_in_at: description: Timestamp when the inbound peak occured. format: date-time type: string maximum_ops_in: description: 'Peak inbound **octets per second** during the interval. ' example: 5734882240 minimum: 0 type: integer maximum_ops_out: description: 'Peak outbound **octets per second** during the interval. ' example: 473220 minimum: 0 type: integer maximum_out_at: description: Timestamp when the outbound peak occured. format: date-time type: string maximum_pps_in: description: 'Peak inbound **packets per second** during the interval. ' example: 1730224 minimum: 0 type: integer maximum_pps_out: description: 'Peak outbound **packets per second** during the interval. ' example: 17456 minimum: 0 type: integer next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string percentile95_ops_out: description: '95th percentile of outbound **octets per second**. ' example: 173220 minimum: 0 type: integer percentile95_pps_in: description: '95th percentile of the inbound **octets per second**. ' example: 1734882240 minimum: 0 type: integer percentile95_pps_out: description: '95th percentile of outbound **packets per second**. ' example: 17456 minimum: 0 type: integer start: description: Start of the traffic aggregation. format: date-time type: string title: description: 'Title of the aggregated statistics. ' example: 30 Days type: string required: - title - start - end - accuracy - created_at - next_update_at - average_pps_in - average_pps_out - average_ops_in - average_ops_out title: AggregateStatistics type: object AggregateTimeseries: description: Aggregated Statistics Timeseries properties: created_at: description: Timestamp when the statistics were created. format: date-time type: string next_update_at: description: 'Next update of the statistical data. This may not correspond to the aggregate interval.' format: date-time type: string origin_timezone: description: 'The timezone where the data was collected in tz database format. ' example: Europe/Amsterdam type: string precision: description: 'Precision indicates the sampling rate of the aggregated traffic data in seconds. For example if the data is aggregated over 5 minutes, the precision would be 300. ' example: 300 minimum: 0 type: integer samples: description: 'A list of timeseries samples, where samples are n-tuples, where the first element is a timestamp. * `timestamp` (DateTime, `string`, ISO 8601, Example: `"2001-10-23T23:42:10Z"`) The other fields can be selected in the `fields` query from the aggregates. Default fields are: * `average_pps_in` (`integer`) * `average_pps_out` (`integer`) * `average_ops_in` (`integer`) * `average_ops_out` (`integer`) Missing values in the timeseries are represented by `null`.' items: example: - '2019-08-24T14:15:22Z' - 120302 - 42980203 - 320302 - 84990203 items: {} minItems: 1 type: array type: array title: description: 'Title of the timeseries. ' example: 5 Minutes type: string required: - title - precision - created_at - next_update_at - origin_timezone - samples title: AggregateTimeseries type: object AllowMemberJoiningRule: allOf: - $ref: '#/components/schemas/MemberJoiningRule' description: A rule for members joining a private vlan properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: allow type: string required: - managing_account - consuming_account - id - network_service - type title: AllowMemberJoiningRule type: object AllowMemberJoiningRulePatch: allOf: - $ref: '#/components/schemas/MemberJoiningRulePatch' description: A vlan member joining rule update properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: allow type: string required: - type title: AllowMemberJoiningRulePatch type: object AllowMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/MemberJoiningRuleRequest' description: A new vlan member joining rule properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: allow type: string required: - managing_account - consuming_account - network_service - type title: AllowMemberJoiningRuleRequest type: object AllowMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: A vlan member joining rule update properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: allow type: string required: - managing_account - consuming_account - type title: AllowMemberJoiningRuleUpdate type: object ApiExtensions: description: Implementation specific API extensions properties: base_url: description: 'Extension endpoints are available under this base url. ' example: https://ixapi.ixp.example.com/v2/inet-services/ format: uri type: string documentation_url: description: 'URL of the documentation homepage of the extension. ' example: https://docs.ixp.example.com/ix-api/extensions/inet-services format: uri type: string name: description: 'Name of the extension. ' example: iNet Services type: string publisher: description: 'Publisher of the extension. ' example: EXAMPLE-IX type: string spec_url: description: 'URL of the extensions schema specifications. The schema format schould be OpenAPI v3. ' example: https://docs.ixp.example.com/ix-api/extensions/inet-services/schema.json format: uri type: string required: - name - publisher - documentation_url - base_url - spec_url title: ApiExtensions type: object ApiHealth: description: Health Status Response properties: checks: additionalProperties: additionalProperties: type: string type: object description: 'The "checks" object MAY have a number of unique keys, one for each logical downstream dependency or sub-component. Since each sub-component may be backed by several nodes with varying health statuses, these keys point to arrays of objects. In case of a single-node sub-component (or if presence of nodes is not relevant), a single-element array SHOULD be used as the value, for consistency. Please see https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html#the-checks-object for details.' type: object description: description: A human-friendly description of the service. type: string links: additionalProperties: type: string description: 'Is an object containing link relations and URIs [RFC3986] for external links that MAY contain more information about the health of the endpoint.' type: object notes: description: Array of notes relevant to current state of health. items: type: string type: array output: description: Raw error output, in case of "fail" or "warn" states. type: string releaseId: description: 'Release version of the api implementation. ' example: 1.23.0 type: string serviceId: description: A unique identifier of the service, in the application scope. type: string status: description: 'status indicates whether the service status is acceptable or not.' enum: - pass - fail - warn type: string version: description: 'Public version of the service. ' example: '1' type: string required: - status title: ApiHealth type: object ApiImplementation: description: API Implementation properties: schema_version: description: 'Version of the implemented IX-API schema. ' example: 2.0.0 type: string service_version: description: 'Version of the API service. ' example: 1.23.0 type: string supported_network_feature_config_types: description: 'Array of supported network feature config types. ' example: - route_server items: type: string type: array supported_network_feature_types: description: 'Array of supported network feature types. ' example: - route_server items: type: string type: array supported_network_service_config_types: description: 'Array of supported network service config types. ' example: - exchange_lan - p2p_vc - cloud_vc items: type: string type: array supported_network_service_types: description: 'Array of network service types, supported by the IX. ' example: - exchange_lan - p2p_vc - cloud_vc items: type: string type: array supported_operations: description: 'Array of implemented operations of the ix-api schema. ' example: - connections_list - connections_read - network_service_configs_create items: type: string type: array required: - schema_version - supported_network_service_types - supported_network_service_config_types - supported_network_feature_types - supported_network_feature_config_types - supported_operations title: ApiImplementation type: object AuthToken: description: AuthToken properties: access_token: type: string refresh_token: type: string required: - access_token - refresh_token title: AuthToken type: object AuthTokenRequest: description: AuthTokenRequest properties: api_key: maxLength: 16 minLength: 16 type: string api_secret: maxLength: 86 minLength: 86 type: string required: - api_key - api_secret title: AuthTokenRequest type: object BillingInformation: description: 'Optional information required for issuing invoices. Only accounts with `billing_information` present can be used as a `billing_account`. *(Sensitive Property)*' properties: address: $ref: '#/components/schemas/Address' name: description: 'Name of the organisation receiving invoices. ' example: Moonoc Network Services LLS. maxLength: 80 type: string vat_number: description: 'Value-added tax number, required for european reverse charge system. ' example: UK2300000042 maxLength: 20 minLength: 2 nullable: true type: string required: - name - address title: BillingInformation type: object CancellationPolicy: description: Cancellation Policy properties: charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service.' format: date type: string required: - decommission_at - charged_until title: CancellationPolicy type: object CancellationRequest: description: Service Cancellation Request properties: decommission_at: description: 'An optional date for scheduling the cancellation and service decommissioning.' format: date type: string title: CancellationRequest type: object CloudNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Cloud Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string delivery_method: description: The exchange delivers the service over a `shared` or `dedicated` NNI. enum: - dedicated - shared type: string display_name: maxLength: 256 type: string diversity: description: 'The service can be delivered over multiple handovers from the exchange to the `service_provider`. The `diversity` denotes the number of handovers between the exchange and the service provider. A value of two signals a redundant service. Only one network service configuration for each `handover` and `cloud_vlan` can be created.' minimum: 1 type: integer downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string service_provider_pop: description: 'The datacenter 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 type: example: cloud_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - provider_vlans - service_metro_area_network - service_metro_area - bandwidth_min - bandwidth_max - service_provider_region - service_provider_pop - service_provider_workflow - delivery_method - diversity - type title: CloudNetworkProductOffering type: object CloudNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Cloud Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string delivery_method: description: The exchange delivers the service over a `shared` or `dedicated` NNI. enum: - dedicated - shared type: string display_name: maxLength: 256 type: string diversity: description: 'The service can be delivered over multiple handovers from the exchange to the `service_provider`. The `diversity` denotes the number of handovers between the exchange and the service provider. A value of two signals a redundant service. Only one network service configuration for each `handover` and `cloud_vlan` can be created.' minimum: 1 type: integer downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string service_provider_pop: description: 'The datacenter 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 type: example: cloud_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: CloudNetworkProductOfferingPatch type: object CloudNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: Cloud Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string cloud_key: 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: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array product_offering: type: string provider_ref: description: 'For a cloud network service with the exchange first workflow, the `provider_ref` will be a reference to a resource of the cloud provider. (E.g. the UUID of a virtual circuit.) The `provider_ref` is managed by the exchange and its meaning may vary between different cloud services. ' example: 331050d5-76fb-498b-b72a-248520278fbd nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: cloud_vc type: string required: - state - id - product_offering - managing_account - consuming_account - billing_account - diversity - provider_ref - cloud_key - type title: CloudNetworkService type: object CloudNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: Cloud Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: cloud_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - handover - cloud_vlan - type title: CloudNetworkServiceConfig type: object CloudNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: Cloud Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: cloud_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type title: CloudNetworkServiceConfigPatch type: object CloudNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: Cloud Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: cloud_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - handover - cloud_vlan - type title: CloudNetworkServiceConfigRequest type: object CloudNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: Cloud Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: cloud_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - handover - cloud_vlan - type title: CloudNetworkServiceConfigUpdate type: object CloudNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: Cloud Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: 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 managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: cloud_vc type: string required: - type title: CloudNetworkServicePatch type: object CloudNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: Cloud Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: 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 managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: cloud_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - cloud_key - type title: CloudNetworkServiceRequest type: object CloudNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: Cloud Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: 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 managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: cloud_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - cloud_key - type title: CloudNetworkServiceUpdate type: object Conflict: description: A conflict is preventing success properties: remote_resource_id: description: 'The id of the conflicting resource. This is in most cases the id of the current resource. ' example: C:523589 type: string remote_resource_type: description: 'The type of the conflicting resource. ' enum: - accounts - connections - contacts - devices - facilities - ips - macs - member-joining-rules - metro-area-network - network-feature-configs - network-features - network-service-configs - network-services - pops - port-reservations - ports - product-offerings - role-assignments - roles example: contacts type: string resource_id: description: 'The id of the resource which has a conflict with the request operation on the current resource. ' example: RA:2819238 type: string resource_property: description: 'Indicates the property where the resource is in use. ' example: contact nullable: true type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - accounts - connections - contacts - devices - facilities - ips - macs - member-joining-rules - metro-area-network - network-feature-configs - network-features - network-service-configs - network-services - pops - port-reservations - ports - product-offerings - role-assignments - roles example: role-assignments type: string required: - resource_type - resource_id - resource_property - remote_resource_type - remote_resource_id title: Conflict type: object Connection: description: Connection properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity_allocated: description: 'Sum of the bandwidth of all network services using the connection in Mbit/s.' minimum: 0 type: integer capacity_allocation_limit: description: 'Maximum allocatable capacity of the connection in Mbit/s. When `null`, the exchange does not impose any limit. ' example: 25000 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string name: maxLength: 80 type: string outer_vlan_ethertypes: description: 'The ethertype of the outer tag in hexadecimal notation. ' example: - '0x8100' items: default: '0x8100' enum: - '0x8100' - '0x88a8' - '0x9100' type: string type: array pop: description: 'The ID of the point of presence (see `/pops`), where the physical port(s) are present. ' example: pop:127388:LD3 type: string port_quantity: description: 'The number of ports which should be allocated for this connection.' minimum: 1 type: integer port_reservations: description: A list of `port-reservations` for this connection. items: type: string type: array ports: description: 'References to the port belonging to this connection. Typically all ports within one connection are distributed over the same device. ' example: - ID23 - '42' - '5' items: type: string type: array product_offering: description: The product offering must match the type `connection`. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array speed: description: 'Shows the total bandwidth of the connection in Mbit/s. ' example: 20000 minimum: 0 nullable: true type: integer state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subscriber_side_demarcs: description: 'The workflow for allocating ports is dependent on the `cross_connect_initiator` property of the `product_offering`: **Cross-Connect initiator: exchange** The subscriber needs to provide a list of demarc information. At least one needs to be provided, but not more than `port_quantity`. The content is interpreted by the exchange and may contain a reference to a pre-existing cross connect order or information required for patching in a structured format (e.g. `...`). Please refer to the usage guide of the internet exchange. --- **Cross-Connect initiator: subscriber** This field can be omitted, when the cross connect initiator is the `subscriber`.' items: type: string type: array vlan_types: description: 'A list of vlan config types you can configure using this connection.' items: enum: - port - dot1q - qinq type: string type: array required: - state - managing_account - consuming_account - billing_account - role_assignments - mode - product_offering - id - name - pop - capacity_allocated - capacity_allocation_limit - vlan_types - outer_vlan_ethertypes - port_quantity title: Connection type: object ConnectionPatch: description: Connection Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string product_offering: description: The product offering must match the type `connection`. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array title: ConnectionPatch type: object ConnectionProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Connection Product Offering properties: contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string cross_connect_initiator: description: 'A cross connect can be initiated by either the exchange or the subscriber. This property affects which side has to provide a LOA and demarc information.' enum: - exchange - subscriber type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string handover_pop: description: 'The ID of the point of presence (see `/pops`), where the physical port will be present. ' example: pop:127388:LD3 nullable: true type: string id: maxLength: 80 type: string maximum_port_quantity: description: 'The maximum amount of ports which can be aggregated in the connection. `null` means no limit.' minimum: 1 nullable: true type: integer name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string required_contact_roles: description: 'The connection will require at least one of each of the specified roles assigned to contacts. The role assignments are associated with the connection through the `role_assignments` list property.' items: type: string readOnly: true type: array resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: connection type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - cross_connect_initiator - type title: ConnectionProductOffering type: object ConnectionProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Conncetion Product Offering properties: contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string cross_connect_initiator: description: 'A cross connect can be initiated by either the exchange or the subscriber. This property affects which side has to provide a LOA and demarc information.' enum: - exchange - subscriber type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string handover_pop: description: 'The ID of the point of presence (see `/pops`), where the physical port will be present. ' example: pop:127388:LD3 nullable: true type: string id: maxLength: 80 type: string maximum_port_quantity: description: 'The maximum amount of ports which can be aggregated in the connection. `null` means no limit.' minimum: 1 nullable: true type: integer name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string required_contact_roles: description: 'The connection will require at least one of each of the specified roles assigned to contacts. The role assignments are associated with the connection through the `role_assignments` list property.' items: type: string readOnly: true type: array resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: connection type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: ConnectionProductOfferingPatch type: object ConnectionRequest: description: Request a new connection properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber` and might be `null`. Please refer to the usage guide of the internet exchange.' nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string port_quantity: description: 'The number of `PortReservation`s that will be created for this connection.' minimum: 1 type: integer product_offering: description: The product offering must match the type `connection`. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array subscriber_side_demarcs: description: 'The workflow for allocating ports is dependent on the `cross_connect_initiator` property of the `product_offering`: **Cross-Connect initiator: exchange** The subscriber needs to provide a list of demarc information. At least one needs to be provided, but not more than `port_quantity`. The content is interpreted by the exchange and may contain a reference to a pre-existing cross connect order or information required for patching in a structured format (e.g. `...`). Please refer to the usage guide of the internet exchange. --- **Cross-Connect initiator: subscriber** This field can be omitted, when the cross connect initiator is the `subscriber`.' items: type: string type: array required: - managing_account - consuming_account - billing_account - role_assignments - mode - product_offering - port_quantity title: ConnectionRequest type: object ConnectionUpdate: description: Connection Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string product_offering: description: The product offering must match the type `connection`. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array required: - managing_account - consuming_account - billing_account - role_assignments - mode - product_offering title: ConnectionUpdate type: object Contact: description: Contact properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - managing_account - consuming_account - id title: Contact type: object ContactPatch: description: Contact Update properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string title: ContactPatch type: object ContactRequest: description: Contact Create Request properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - managing_account - consuming_account title: ContactRequest type: object ContactUpdate: description: Contact Update properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string required: - managing_account - consuming_account title: ContactUpdate type: object DenyMemberJoiningRule: allOf: - $ref: '#/components/schemas/MemberJoiningRule' description: A rule for members joining a private vlan properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: deny type: string required: - managing_account - consuming_account - id - network_service - type title: DenyMemberJoiningRule type: object DenyMemberJoiningRulePatch: allOf: - $ref: '#/components/schemas/MemberJoiningRulePatch' description: A vlan member joining rule update properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: deny type: string required: - type title: DenyMemberJoiningRulePatch type: object DenyMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/MemberJoiningRuleRequest' description: A new vlan member joining rule properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: deny type: string required: - managing_account - consuming_account - network_service - type title: DenyMemberJoiningRuleRequest type: object DenyMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: A vlan member joining rule update properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: deny type: string required: - managing_account - consuming_account - type title: DenyMemberJoiningRuleUpdate type: object Device: description: Device properties: capabilities: items: $ref: '#/components/schemas/DeviceCapability' type: array facility: description: 'Identifier of the facility where the device is physically based.' readOnly: true type: string id: maxLength: 80 type: string name: description: 'Name of the device ' example: edge2.moon.space-ix.net maxLength: 180 type: string pop: description: The `PointOfPresence` the device is in. type: string required: - name - pop - id title: Device type: object DeviceCapability: description: Device Capability properties: availability: description: 'Count of available ports on device ' example: 23 format: int32 maximum: 2147483647 minimum: 0 readOnly: true type: integer max_lag: description: Maximum count of ports which can be bundled to a max_lag example: 8 format: int32 maximum: 32767 minimum: 0 readOnly: true type: integer media_type: description: 'The media type of the port (e.g. 1000BASE-LX, 10GBASE-LR, ...) ' example: 1000BASE-LX maxLength: 20 readOnly: true type: string speed: description: 'Speed of port in Mbit/s ' example: 1000 readOnly: true type: integer title: DeviceCapability type: object DeviceConnection: description: Device Connection properties: capacity_max: format: int32 maximum: 2147483647 minimum: 0 type: integer connected_device: type: string device: type: string id: maxLength: 80 type: string required: - capacity_max - device - connected_device - id title: DeviceConnection type: object Event: description: Event properties: account: readOnly: true type: string payload: type: object serial: type: integer timestamp: format: date-time type: string type: type: string required: - serial - type - payload - timestamp title: Event type: object ExchangeLanNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: Exchange Lan Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_lan_network_service: description: The id of the exchange lan network service. type: string exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: exchange_lan type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - provider_vlans - service_metro_area_network - service_metro_area - bandwidth_min - bandwidth_max - exchange_lan_network_service - type title: ExchangeLanNetworkProductOffering type: object ExchangeLanNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: Exchange Lan Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_lan_network_service: description: The id of the exchange lan network service. type: string exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: exchange_lan type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: ExchangeLanNetworkProductOfferingPatch type: object ExchangeLanNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: Exchange Lan Network Service properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string ixfdb_ixid: description: id of ixfdb nullable: true type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string metro_area_network: description: 'Id of the `MetroAreaNetwork` where the exchange lan network service is directly provided. Same as `service_metro_area_network` on the related `ProductOffering`. ' example: man:293225:LON2 type: string name: description: Exchange-dependent service name, will be shown on the invoice. maxLength: 40 type: string network_features: items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array peeringdb_ixid: description: PeeringDB ixid nullable: true type: integer product_offering: description: '*deprecation notice*' type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subnet_v4: description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) CIDR notation. ' example: 23.142.52.0/21 type: string subnet_v6: description: 'IPv6 subnet in hexadecimal colon separated CIDR notation. ' example: 2001:23:42::/48 type: string type: example: exchange_lan type: string required: - state - id - managing_account - consuming_account - name - metro_area_network - network_features - subnet_v4 - subnet_v6 - type title: ExchangeLanNetworkService type: object ExchangeLanNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: Exchange Lan Network Service Config properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string product_offering: description: 'The product offering must match the type `exchange_lan` and must refer to the related network service through the `exchange_lan_network_service` property.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: exchange_lan type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - asns - listed - product_offering - type title: ExchangeLanNetworkServiceConfig type: object ExchangeLanNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: Exchange Lan Network Service Config Update properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: exchange_lan type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type title: ExchangeLanNetworkServiceConfigPatch type: object ExchangeLanNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: Exchange Lan Network Service Config Request properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string product_offering: description: 'The product offering must match the type `exchange_lan` and must refer to the related network service through the `exchange_lan_network_service` property.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: exchange_lan type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - asns - listed - product_offering - type title: ExchangeLanNetworkServiceConfigRequest type: object ExchangeLanNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: Exchange Lan Network Service Config Update properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: exchange_lan type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - asns - listed - type title: ExchangeLanNetworkServiceConfigUpdate type: object Facility: description: Facility properties: address_country: description: 'ISO 3166-1 alpha-2 country code, for example DE ' example: US maxLength: 2 type: string address_locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 80 type: string address_region: description: The region. For example, CA example: CA maxLength: 80 type: string id: maxLength: 80 type: string latitude: description: 'Latitude of the facility''s location. ' example: 52.437879 type: number longitude: description: 'Longitude of the facility''s location. ' example: 13.650965 type: number metro_area: description: 'Id of the `MetroArea` the DC is located in. ' example: met:93214980:BER type: string name: description: 'Name of the Datacenter as called by the operator ' example: Crater DC Moon 1 maxLength: 80 type: string organisation_name: description: 'Name of Datacenter operator ' example: Moon Datacenters maxLength: 80 type: string peeringdb_facility_id: description: '[PeeringDB](https://www.peeringdb.com) facitlity ID, can be extracted from the url https://www.peeringdb.com/fac/$id ' example: 103 format: int32 maximum: 2147483647 minimum: 0 nullable: true type: integer pops: description: List of pops reachable from the `Facility`. items: type: string type: array postal_code: description: A postal code. For example, 9404 example: '9409' maxLength: 18 type: string street_address: description: The street address. For example, 1600 Amphitheatre Pkwy. example: 1600 Amphitheatre Pkwy. maxLength: 80 type: string required: - name - metro_area - address_country - address_locality - address_region - postal_code - street_address - organisation_name - pops - id title: Facility type: object IXPSpecificFeatureFlag: description: IXP-Specific Feature Flag properties: description: description: 'The description of the feature flag. ' example: RPKI reject invalid filtering is available maxLength: 80 type: string mandatory: description: 'This feature will always be enabled, even if not provided in the corresponding config''s list of `flags`. ' type: boolean name: description: 'The name of the feature flag. ' example: RPKI-HARD-FILTER maxLength: 40 type: string required: - name - description - mandatory title: IXPSpecificFeatureFlag type: object IXPSpecificFeatureFlagConfig: description: IXP-Specific Feature Flag Configuration properties: enabled: description: 'Enable the feature. *Mandatory features can not be disabled*.' type: boolean name: description: 'The name of the feature flag. ' example: RPKI-HARD-FILTER maxLength: 40 type: string required: - name - enabled title: IXPSpecificFeatureFlagConfig type: object IpAddress: description: IP-Address properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer required: - managing_account - consuming_account - version - address - prefix_length - id title: IpAddress type: object IpAddressPatch: description: IP-Address Update properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer title: IpAddressPatch type: object IpAddressRequest: description: IP-Address / Prefix allocation Request properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer required: - managing_account - consuming_account - version - address - prefix_length title: IpAddressRequest type: object IpAddressUpdate: description: IP-Address Update properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer required: - managing_account - consuming_account - version - address - prefix_length title: IpAddressUpdate type: object MP2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: MP2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: mp2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - provider_vlans - service_metro_area_network - service_metro_area - bandwidth_min - bandwidth_max - type title: MP2MPNetworkProductOffering type: object MP2MPNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: MP2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: mp2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: MP2MPNetworkProductOfferingPatch type: object MP2MPNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: MP2MP Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string member_joining_rules: items: type: string type: array network_features: items: type: string type: array nsc_product_offerings: description: 'An optional list of `ProductOffering`s which can be used in the network service configs for this service.' items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array product_offering: type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: mp2mp_vc type: string required: - state - id - product_offering - managing_account - consuming_account - billing_account - member_joining_rules - network_features - type title: MP2MPNetworkService type: object MP2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: MP2MP Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: mp2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: MP2MPNetworkServiceConfig type: object MP2MPNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: MP2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: mp2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type title: MP2MPNetworkServiceConfigPatch type: object MP2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: MP2MP Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: mp2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: MP2MPNetworkServiceConfigRequest type: object MP2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: MP2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: mp2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - type title: MP2MPNetworkServiceConfigUpdate type: object MP2MPNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: MP2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: mp2mp_vc type: string required: - type title: MP2MPNetworkServicePatch type: object MP2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: MP2MP Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: mp2mp_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - type title: MP2MPNetworkServiceRequest type: object MP2MPNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: MP2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the multi-point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of, for example: "Financial Clearance LAN". ' example: Closed User Group Finance type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public mp2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `display_name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: mp2mp_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - type title: MP2MPNetworkServiceUpdate type: object MacAddress: description: MAC-Address properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: 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: - managing_account - consuming_account - address - id title: MacAddress type: object MacAddressRequest: description: MAC-Address Request properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: 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: - managing_account - consuming_account - address title: MacAddressRequest type: object MemberJoiningRule: description: Polymorphic Member Joining Rule discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRule' deny: '#/components/schemas/DenyMemberJoiningRule' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRule' - $ref: '#/components/schemas/DenyMemberJoiningRule' title: MemberJoiningRule type: object MemberJoiningRulePatch: description: Polymorphic Member Joining Rule Update discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRulePatch' deny: '#/components/schemas/DenyMemberJoiningRulePatch' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRulePatch' - $ref: '#/components/schemas/DenyMemberJoiningRulePatch' title: MemberJoiningRulePatch type: object MemberJoiningRuleRequest: description: Polymorphic Member Joining Rule Request discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleRequest' deny: '#/components/schemas/DenyMemberJoiningRuleRequest' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleRequest' - $ref: '#/components/schemas/DenyMemberJoiningRuleRequest' title: MemberJoiningRuleRequest type: object MemberJoiningRuleUpdate: description: Polymorphic Member Joining Rule Update discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleUpdate' deny: '#/components/schemas/DenyMemberJoiningRuleUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdate' - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdate' title: MemberJoiningRuleUpdate type: object MetroArea: description: MetroArea properties: display_name: description: 'The name of the metro area. Likely the same as the IATA code. ' example: FRA maxLength: 64 type: string facilities: description: List of facilities the metro area network. items: type: string type: array iata_code: description: 'The three letter IATA airport code for identiying the metro area. ' example: FRA maxLength: 3 type: string id: maxLength: 80 type: string metro_area_networks: description: List of networks in the metro area. items: type: string type: array un_locode: description: 'The UN/LOCODE for identifying the metro area. ' example: DE FRA maxLength: 6 type: string required: - id - un_locode - iata_code - display_name - facilities - metro_area_networks title: MetroArea type: object MetroAreaNetwork: description: MetroAreaNetwork properties: id: maxLength: 80 type: string metro_area: description: 'The id of the metro area. ' example: met:199399:FRA type: string name: description: 'The name of the metro area network. ' example: MY-IX-FRA1 maxLength: 32 type: string pops: description: List of pops in the metro area network. items: type: string type: array service_provider: description: 'The service provider is operating the network. Usually the exchange. ' example: MY-IX maxLength: 128 type: string required: - name - metro_area - service_provider - pops - id title: MetroAreaNetwork type: object NetworkFeature: description: Polymorphic Network Feature discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeature' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeature' title: NetworkFeature type: object NetworkFeatureConfig: description: Polymorphic Network Feature Config discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfig' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfig' title: NetworkFeatureConfig type: object NetworkFeatureConfigPatch: description: Polymorphic Network Feauture Config Patch discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPatch' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPatch' title: NetworkFeatureConfigPatch type: object NetworkFeatureConfigRequest: description: Polymorphic Network Feature Config Request discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequest' title: NetworkFeatureConfigRequest type: object NetworkFeatureConfigUpdate: description: Polymorphic Network Feauture Config Update discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate' title: NetworkFeatureConfigUpdate type: object NetworkService: description: Polymorphic Network Services discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' exchange_lan: '#/components/schemas/ExchangeLanNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkService' - $ref: '#/components/schemas/P2PNetworkService' - $ref: '#/components/schemas/P2MPNetworkService' - $ref: '#/components/schemas/MP2MPNetworkService' - $ref: '#/components/schemas/CloudNetworkService' title: NetworkService type: object NetworkServiceChangeRequest: description: NetworkServiceChangeRequest properties: capacity: description: 'The desired capacity of the service in Mbps. Must be within the range of `bandwidth_min` and `bandwidth_max` of the `ProductOffering`. When `null` the maximum capacity wil be used.' minimum: 1 nullable: true type: integer product_offering: description: 'Migrate to a diffrent product offering. Please note, that the offering only may differ in bandwidth.' type: string required: - product_offering title: NetworkServiceChangeRequest type: object NetworkServiceConfig: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfig' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfig' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfig' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfig' p2p_vc: '#/components/schemas/P2PNetworkServiceConfig' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfig' - $ref: '#/components/schemas/P2PNetworkServiceConfig' - $ref: '#/components/schemas/P2MPNetworkServiceConfig' - $ref: '#/components/schemas/MP2MPNetworkServiceConfig' - $ref: '#/components/schemas/CloudNetworkServiceConfig' title: NetworkServiceConfig type: object NetworkServiceConfigPatch: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigPatch' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigPatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigPatch' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigPatch' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigPatch' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPatch' - $ref: '#/components/schemas/P2PNetworkServiceConfigPatch' - $ref: '#/components/schemas/P2MPNetworkServiceConfigPatch' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPatch' - $ref: '#/components/schemas/CloudNetworkServiceConfigPatch' title: NetworkServiceConfigPatch type: object NetworkServiceConfigRequest: description: Polymorhic Network Service Config Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequest' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequest' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest' - $ref: '#/components/schemas/P2PNetworkServiceConfigRequest' - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/CloudNetworkServiceConfigRequest' title: NetworkServiceConfigRequest type: object NetworkServiceConfigUpdate: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdate' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigUpdate' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigUpdate' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate' - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdate' - $ref: '#/components/schemas/P2MPNetworkServiceConfigUpdate' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigUpdate' - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdate' title: NetworkServiceConfigUpdate type: object NetworkServiceDeleteResponse: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkService' - $ref: '#/components/schemas/P2MPNetworkService' - $ref: '#/components/schemas/MP2MPNetworkService' - $ref: '#/components/schemas/CloudNetworkService' title: NetworkServiceDeleteResponse type: object NetworkServicePatch: description: Polymorphic Network Service Patch discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServicePatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePatch' p2mp_vc: '#/components/schemas/P2MPNetworkServicePatch' p2p_vc: '#/components/schemas/P2PNetworkServicePatch' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServicePatch' - $ref: '#/components/schemas/P2MPNetworkServicePatch' - $ref: '#/components/schemas/MP2MPNetworkServicePatch' - $ref: '#/components/schemas/CloudNetworkServicePatch' title: NetworkServicePatch type: object NetworkServiceRequest: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceRequest' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServiceRequest' - $ref: '#/components/schemas/P2MPNetworkServiceRequest' - $ref: '#/components/schemas/MP2MPNetworkServiceRequest' - $ref: '#/components/schemas/CloudNetworkServiceRequest' title: NetworkServiceRequest type: object NetworkServiceUpdate: description: Polymorphic Network Service Update discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceUpdate' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceUpdate' p2mp_vc: '#/components/schemas/P2MPNetworkServiceUpdate' p2p_vc: '#/components/schemas/P2PNetworkServiceUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServiceUpdate' - $ref: '#/components/schemas/P2MPNetworkServiceUpdate' - $ref: '#/components/schemas/MP2MPNetworkServiceUpdate' - $ref: '#/components/schemas/CloudNetworkServiceUpdate' title: NetworkServiceUpdate type: object P2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: P2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: p2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - provider_vlans - service_metro_area_network - service_metro_area - bandwidth_min - bandwidth_max - type title: P2MPNetworkProductOffering type: object P2MPNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: P2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: p2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: P2MPNetworkProductOfferingPatch type: object P2MPNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: P2MP Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string member_joining_rules: items: type: string type: array network_features: items: type: string type: array nsc_product_offerings: description: 'An optional list of `ProductOffering`s which can be used in the network service configs for this service.' items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array product_offering: type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: p2mp_vc type: string required: - state - id - product_offering - managing_account - consuming_account - billing_account - network_features - member_joining_rules - type title: P2MPNetworkService type: object P2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: P2MP Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: p2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - state - id - network_service - type title: P2MPNetworkServiceConfig type: object P2MPNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: P2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type title: P2MPNetworkServiceConfigPatch type: object P2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: P2MP Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: P2MPNetworkServiceConfigRequest type: object P2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: P2MP Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role: default: leaf description: 'A `leaf` can only reach roots and is isolated from other leafs. A `root` can reach any other point in the virtual circuit including other roots.' enum: - root - leaf type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2mp_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: P2MPNetworkServiceConfigUpdate type: object P2MPNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: P2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2mp_vc type: string required: - type title: P2MPNetworkServicePatch type: object P2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: P2MP Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2mp_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - type title: P2MPNetworkServiceRequest type: object P2MPNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: P2MP Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to multi-point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Tree Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string public: default: false description: 'A public p2mp network service can be joined by everyone on the exchange unless denied by a member-joining-rule. Public network services are visible to other members of the IXP, however only `name`, `type`, `product_offering`, `consuming_account` and `managing_account` are made available. Other required fields are redacted.' type: boolean purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2mp_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - type title: P2MPNetworkServiceUpdate type: object P2PNetworkProductOffering: allOf: - $ref: '#/components/schemas/ProductOffering' description: P2P Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: p2p_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - id - name - display_name - resource_type - handover_metro_area_network - handover_metro_area - physical_port_speed - service_provider - downgrade_allowed - upgrade_allowed - provider_vlans - service_metro_area_network - service_metro_area - bandwidth_min - bandwidth_max - type title: P2PNetworkProductOffering type: object P2PNetworkProductOfferingPatch: allOf: - $ref: '#/components/schemas/ProductOfferingPatch' description: P2P Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer contract_terms: description: 'The contract terms informally describe the contract period and renewals. ' example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free nullable: true type: string display_name: maxLength: 256 type: string downgrade_allowed: description: 'Indicates if the service can be migrated to a lower bandwidth.' type: boolean exchange_logo: description: 'An URI referencing the logo of the internet exchange. ' example: https://example.ix/resources/ixpLogo format: uri type: string handover_metro_area: description: 'Id of the `MetroArea`. The network service will be accessed from this metro area. In case of a `p2p_vc`, the `handover_metro_area` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: met:29381993:NYC type: string handover_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service will be accessed through the handover metro area network. In case of a `p2p_vc`, the `handover_metro_area_network` refers to the A-side of the point-to-point connection. The A-side is the entity which initiates the network service creation. ' example: '191239810' type: string id: maxLength: 80 type: string name: description: Name of the product maxLength: 160 type: string notice_period: description: 'The notice period informally states constraints which define when the client needs to inform the IXP in order to prevent renewal of the contract. ' example: at least 2 weeks before the end of every odd month nullable: true type: string orderable_not_after: description: 'This product offering will become unavailable for ordering after this point in time.' format: date-time nullable: true type: string orderable_not_before: description: 'This product offering becomes available for ordering after this point in time.' format: date-time nullable: true type: string physical_port_speed: description: 'If the service is dependent on the speed of the physical port this field denotes the speed.' minimum: 0 nullable: true type: integer product_logo: description: 'An URI referencing a logo for the product offered. ' example: https://example.ix/resources/products/activeCloudPremium format: uri type: string provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - port_reservation - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. In case of a `p2p_vc`, the `service_metro_area` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: met:213913485:LON type: string service_metro_area_network: description: 'Id of the `MetroAreaNetwork`. The service is directly provided on the metro area network. In case of a `p2p_vc`, the `service_metro_area_network` refers to the B-side of the point-to-point connection. The B-side is the accepting party. ' example: '9123843' type: string service_provider: description: 'The name of the provider providing the service. ' example: AWS type: string service_provider_logo: description: 'An URI referencing the logo of the service provider. ' example: https://example.ix/resources/providerLogo format: uri type: string type: example: p2p_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: P2PNetworkProductOfferingPatch type: object P2PNetworkService: allOf: - $ref: '#/components/schemas/NetworkService' description: P2P Network Service properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string nsc_product_offerings: description: 'An optional list of `ProductOffering`s which can be used in the network service configs for this service.' items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: p2p_vc type: string required: - state - id - product_offering - managing_account - consuming_account - billing_account - joining_member_account - type title: P2PNetworkService type: object P2PNetworkServiceConfig: allOf: - $ref: '#/components/schemas/NetworkServiceConfig' description: P2P Network Service Config properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: p2p_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: P2PNetworkServiceConfig type: object P2PNetworkServiceConfigPatch: allOf: - $ref: '#/components/schemas/NetworkServiceConfigPatch' description: P2P Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2p_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - type title: P2PNetworkServiceConfigPatch type: object P2PNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/NetworkServiceConfigRequest' description: P2P Network Service Config Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2p_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: P2PNetworkServiceConfigRequest type: object P2PNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: P2P Network Service Config Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array product_offering: description: 'An optional id of a `ProductOffering`. Valid ids of product-offerings can be found in the `nsc_product_offerings` property of the `NetworkService`.' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array type: example: p2p_vc type: string vlan_config: $ref: '#/components/schemas/VlanConfig' required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - type title: P2PNetworkServiceConfigUpdate type: object P2PNetworkServicePatch: allOf: - $ref: '#/components/schemas/NetworkServicePatch' description: P2P Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2p_vc type: string required: - type title: P2PNetworkServicePatch type: object P2PNetworkServiceRequest: allOf: - $ref: '#/components/schemas/NetworkServiceRequest' description: P2P Network Service Request properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2p_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - joining_member_account - type title: P2PNetworkServiceRequest type: object P2PNetworkServiceUpdate: allOf: - $ref: '#/components/schemas/NetworkServiceUpdate' description: P2P Network Service Update properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string display_name: description: 'Name of the point to point virtual circuit. It is visible to all parties allowed to connect to this virtual circuit. It is intended for humans to make sense of. ' example: E-Line Customer type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2p_vc type: string required: - product_offering - managing_account - consuming_account - billing_account - joining_member_account - type title: P2PNetworkServiceUpdate type: object PointOfPresence: description: Point Of Presence properties: devices: items: type: string type: array facility: description: The pop is located in this `Facility`. type: string id: maxLength: 80 type: string metro_area_network: type: string name: maxLength: 40 type: string required: - name - facility - metro_area_network - devices - id title: PointOfPresence type: object Port: description: Port properties: billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string connection: nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string device: description: 'The device the port. ' example: device:29139871 type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string media_type: description: 'The media type of the port. Query the device''s capabilities for available types. ' example: 10GBASE-LR maxLength: 20 type: string name: default: '' description: Name of the port (set by the exchange) maxLength: 80 readOnly: true type: string operational_state: description: The operational state of the port. enum: - up - down - error type: string pop: description: 'Same as the `pop` of the `device`. ' example: pop:2913 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array speed: minimum: 0 nullable: true readOnly: true type: integer state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array required: - state - managing_account - consuming_account - billing_account - role_assignments - id - media_type - device - pop title: Port type: object PortReservation: description: A PortReservation properties: charged_until: description: "The service continues incurring charges until this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\ \ Property)*" format: date type: string connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string connection: description: The `Port` will become part of this connection. type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string current_billing_start_date: description: 'Your obligation to pay for the service will start on this date. However, this date may change after an upgrade and not reflect the inital start date of the service. *(Sensitive Property)*' format: date type: string decommission_at: description: 'The service will be decommissioned on this date. This field is only used when the state is `DECOMMISSION_REQUESTED` or `DECOMMISSIONED`.' format: date type: string exchange_side_demarc: description: 'Exchange side demarc information. This field will only be filled in when the port state is `allocated` or in `production`. Otherwise this field will be `null`.' nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string port: description: 'This field will be null, until a port will be allocated.' nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string required: - state - id - connection title: PortReservation type: object PortReservationPatch: description: PortReservation Update properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string title: PortReservationPatch type: object PortReservationRequest: description: A PortReservation properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string connection: description: A connection is required for port allocation. type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string required: - connection title: PortReservationRequest type: object PortReservationUpdate: description: PortReservation Update properties: connecting_party: description: 'Name of the service provider who establishes connectivity on your behalf. This is only relevant, if the cross connect initiator is the `subscriber`. Please refer to the usage guide of the internet exchange.' nullable: true type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string cross_connect_id: description: An optional identifier of a cross connect. type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string subscriber_side_demarc: description: 'In an exchange initiated scenario, this field will indicated one of the provided `subscriber_side_demarcs` from the connection.' type: string title: PortReservationUpdate type: object PortStatistics: description: Port Statistics properties: aggregates: additionalProperties: $ref: '#/components/schemas/AggregateStatistics' description: 'Aggregated statistics for a connection or service configuration For the **property name** the aggregate interval as a string representation is used. For example: `5m`, `1d`, `30d`, `1y`. If a window is defined via the `start` and `end` query parameter, the **property name** will be `custom`. The available intervals can differ by implementation. ' example: *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: - aggregates - light_levels_tx - light_levels_rx title: PortStatistics type: object ProblemResponse: description: Encodes a problem into an appropriate response body. properties: detail: description: 'A human-readable explanation specific to this occurrence of the problem.' type: string instance: description: 'A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.' type: string status: description: 'The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.' minimum: 100 type: integer title: description: 'A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4). ' example: Some fields have validation errors. type: string type: description: 'A URI reference (see RFC3986) that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be "about:blank". ' example: about:blank type: string required: - type title: ProblemResponse type: object ProductOffering: description: Polymorphic Product Offering discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOffering' connection: '#/components/schemas/ConnectionProductOffering' exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOffering' mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOffering' p2mp_vc: '#/components/schemas/P2MPNetworkProductOffering' p2p_vc: '#/components/schemas/P2PNetworkProductOffering' propertyName: type oneOf: - $ref: '#/components/schemas/ConnectionProductOffering' - $ref: '#/components/schemas/ExchangeLanNetworkProductOffering' - $ref: '#/components/schemas/P2PNetworkProductOffering' - $ref: '#/components/schemas/MP2MPNetworkProductOffering' - $ref: '#/components/schemas/P2MPNetworkProductOffering' - $ref: '#/components/schemas/CloudNetworkProductOffering' title: ProductOffering type: object ProductOfferingPatch: description: Polymorphic Product Offering discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOfferingPatch' connection: '#/components/schemas/ConnectionProductOfferingPatch' exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOfferingPatch' mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOfferingPatch' p2mp_vc: '#/components/schemas/P2MPNetworkProductOfferingPatch' p2p_vc: '#/components/schemas/P2PNetworkProductOfferingPatch' propertyName: type oneOf: - $ref: '#/components/schemas/ConnectionProductOfferingPatch' - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPatch' - $ref: '#/components/schemas/P2PNetworkProductOfferingPatch' - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPatch' - $ref: '#/components/schemas/P2MPNetworkProductOfferingPatch' - $ref: '#/components/schemas/CloudNetworkProductOfferingPatch' title: ProductOfferingPatch type: object RefreshTokenRequest: description: RefreshTokenRequest properties: refresh_token: type: string required: - refresh_token title: RefreshTokenRequest type: object Role: description: Role for a Contact properties: id: type: string name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - name - required_fields - id title: Role type: object RoleAssignment: description: A role assignment for a contact properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string id: type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - role - contact - id title: RoleAssignment type: object RoleAssignmentPatch: description: A role assignment update properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string title: RoleAssignmentPatch type: object RoleAssignmentRequest: description: A role assignment request properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - role - contact title: RoleAssignmentRequest type: object RoleAssignmentUpdate: description: A role assignemnt update properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string required: - role - contact title: RoleAssignmentUpdate type: object RolePatch: description: Role Update properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array title: RolePatch type: object RoleRequest: description: Create Role properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - name - required_fields title: RoleRequest type: object RoleUpdate: description: Role Update properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array required: - name - required_fields title: RoleUpdate type: object RouteServerNetworkFeature: allOf: - $ref: '#/components/schemas/NetworkFeature' description: Route Server Network Feature properties: address_families: description: 'When creating a route server feature config, remember to specify which address family or families to use: If the route server network feature only supports `af_inet`, then the `as_set_v4` in the network feature config is required. If only `af_inet6` is supported, then the `as_set_v6` is required. If both `af_inet` and `af_inet6` are supported, either `as_set_v4` or `as_set_v6` is required, but both can be provided in the network service config. ' example: - af_inet items: enum: - af_inet - af_inet6 type: string type: array asn: minimum: 0 type: integer available_bgp_session_types: description: 'The route server provides the following session modes. ' example: - passive items: enum: - active - passive type: string type: array flags: description: 'A list of IXP specific feature flags. This can be used to see if e.g. RPKI hard filtering is available.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlag' type: array fqdn: description: 'The FQDN of the route server. ' example: rs1.moon-ix.net maxLength: 80 type: string id: type: string ip_v4: description: 'IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) notation. This field is only set if the `address_families` include `af_inet`. ' example: 23.42.0.1 type: string ip_v6: description: 'IPv6 address in hexadecimal colon separated notation. This field is only set if the `address_families` include `af_inet6`. ' example: 2001:23:42::1 type: string looking_glass_url: description: 'The url of the looking glass. ' example: https://lg.moon-ix.net/rs1 format: uri type: string name: maxLength: 80 type: string network_service: type: string nfc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The role assignments is associated with the network feature config through the `role_assignments` list property.' items: type: string readOnly: true type: array required: type: boolean session_mode: description: 'When creating a route server feature config, remember to specify the same session_mode as the route server. ' enum: - public - collector example: public type: string type: example: route_server type: string required: - id - name - required - flags - network_service - asn - fqdn - address_families - session_mode - available_bgp_session_types - type title: RouteServerNetworkFeature type: object RouteServerNetworkFeatureConfig: allOf: - $ref: '#/components/schemas/NetworkFeatureConfig' description: Route Server Network Feature Config properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string flags: description: 'A list of IXP specific feature flag configs. This can be used to enable or disable a specific feature flag.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig' type: array id: maxLength: 80 type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer network_feature: type: string network_service_config: type: string password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: route_server type: string required: - state - managing_account - consuming_account - billing_account - role_assignments - network_feature - network_service_config - asn - session_mode - bgp_session_type - ip - id - type title: RouteServerNetworkFeatureConfig type: object RouteServerNetworkFeatureConfigPatch: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigPatch' description: Route Server Network Feature Config Update properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string type: example: route_server type: string required: - type title: RouteServerNetworkFeatureConfigPatch type: object RouteServerNetworkFeatureConfigRequest: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigRequest' description: Route Server Network Feature Config Request properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: 'An account requires billing_information to be used as a `billing_account`. *(Sensitive Property)*' type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. *(Sensitive Property)* ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string flags: description: 'A list of IXP specific feature flag configs. This can be used to enable or disable a specific feature flag.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig' type: array insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer network_feature: type: string network_service_config: type: string password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. *(Sensitive Property)* ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. Please note, that any contact role can additionally be provided. The presence of at least one of each required contact roles is necessary. ' example: - c-impl:123 - c-noc:331 items: type: string type: array session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string type: example: route_server type: string required: - managing_account - consuming_account - billing_account - role_assignments - network_feature - network_service_config - asn - session_mode - bgp_session_type - ip - type title: RouteServerNetworkFeatureConfigRequest type: object RouteServerNetworkFeatureConfigUpdate: allOf: - $ref: '#/components/schemas/NetworkFeatureConfigUpdate' description: Route Server Network Feature Config Update properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: 'Reference field, free to use for the API user. *(Sensitive Property)* ' example: IX:Service:23042 maxLength: 128 nullable: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, referenced by ID. Only IDs of IPs assigned to the corresponding network service config can be used.' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string max_prefix_v4: description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer max_prefix_v6: description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp session will be droped. ' example: 5000 minimum: 0 nullable: true type: integer password: default: '' description: The cleartext BGP session password example: bgp-session-test-23 maxLength: 128 type: string session_mode: description: 'Set the session mode with the routeserver. ' enum: - public - collector example: public type: string type: example: route_server type: string required: - managing_account - consuming_account - asn - session_mode - bgp_session_type - ip - type title: RouteServerNetworkFeatureConfigUpdate type: object Status: description: Status Message properties: attrs: description: 'Optional machine readable key value pairs supplementing the message. A custom, detailed or localized error messagen can be presented to the user, derived from the `tag` and `attrs`. ' example: mac: 02:42:23:42:a0:bc type: object message: description: 'A human readable message, describing the problem and may contain hints for resolution. ' example: The peer sent an ARP reply for an IP addresses that has not been assigned to them. type: string severity: description: 'We are using syslog severity levels: 0 = Emergency, 1 = Alert, 2 = Critical, 3 = Error, 4 = Warning, 5 = Notice, 6 = Informational, 7 = Debug. ' example: 2 format: int32 maximum: 7 minimum: 0 type: integer tag: description: 'A machine readable message identifier. ' example: proxy_arp_detected type: string timestamp: description: The time and date when the event occured. format: date-time type: string required: - severity - tag - message - timestamp title: Status type: object VLanConfigDot1Q: allOf: - $ref: '#/components/schemas/VlanConfig' description: A Dot1Q vlan configuration properties: vlan: description: 'A VLAN tag. If `null`, the IXP will auto-select a valid vlan-id. ' example: 23 format: int32 maximum: 4094 minimum: 1 nullable: true type: integer vlan_ethertype: default: '0x8100' description: The ethertype of the vlan in hexadecimal notation. enum: - '0x8100' - '0x88a8' - '0x9100' type: string vlan_type: example: dot1q type: string required: - vlan_type title: VLanConfigDot1Q type: object VLanConfigPort: allOf: - $ref: '#/components/schemas/VlanConfig' description: A Port vlan configuration properties: vlan_type: example: port type: string required: - vlan_type title: VLanConfigPort type: object VLanConfigQinQ: allOf: - $ref: '#/components/schemas/VlanConfig' description: A QinQ vlan configuration properties: inner_vlan: description: 'The inner VLAN id. ' example: 200 format: int32 maximum: 4094 minimum: 1 type: integer outer_vlan: description: 'The outer VLAN id. If `null`, the IXP will auto-select a valid vlan-id. ' example: 200 format: int32 maximum: 4094 minimum: 1 nullable: true type: integer outer_vlan_ethertype: default: '0x8100' description: The ethertype of the outer tag in hexadecimal notation. enum: - '0x8100' - '0x88a8' - '0x9100' type: string vlan_type: example: dot1q type: string required: - inner_vlan - vlan_type title: VLanConfigQinQ type: object ValidationErrorProperty: description: A failed validation properties: name: type: string reason: type: string required: - name - reason title: ValidationErrorProperty type: object VlanConfig: description: 'The vlan configuration defines how the service is made available on the connection.' discriminator: mapping: dot1q: '#/components/schemas/VLanConfigDot1Q' port: '#/components/schemas/VLanConfigPort' qinq: '#/components/schemas/VLanConfigQinQ' propertyName: vlan_type oneOf: - $ref: '#/components/schemas/VLanConfigDot1Q' - $ref: '#/components/schemas/VLanConfigQinQ' - $ref: '#/components/schemas/VLanConfigPort' title: VlanConfig type: object securitySchemes: Bearer: bearerFormat: JWT scheme: bearer type: http OAuth: description: ' This API uses OAuth 2. We suggest to use the scope: `ix-api` but it is up to the implementers to decide the details. This includes what flows to support. ' flows: authorizationCode: authorizationUrl: https://auth.example-ix/see-implementation-guide scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide clientCredentials: scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide implicit: authorizationUrl: https://auth.example-ix/see-implementation-guide scopes: ix-api: access the IX-API password: scopes: ix-api: access the IX-API tokenUrl: https://auth.example-ix/see-implementation-guide type: oauth2 info: contact: url: https://ix-api.net description: ' This API allows to configure/change/delete Internet Exchange services. # Filters When querying collections, the provided query parameters are validated. Unknown query parameters are ignored. Providing invalid filter values should yield a validation error. # State A lot of resources are stateful, indicated by the presence of a `state` property, to support the inherently asynchronous nature of provisioning, deployment and on-boarding processes. The following table describes the meaning of each state: | State | Meaning | | ------ | ------ | | requested | Resource has been requested by the customer but not yet fully reserved (sub-resources required) | | allocated | All resources required for service are reserved | | testing | The resource is provisioned and is currently being tested | | production | The resource is active and can be used by the customer | | production_change_pending | The resource is active but the customer has requested a change that is awaiting completion | | decommission_requested | The resource is active but the customer has requested disconnection that is awaiting completion | | decommissioned | The resource has been de-provisioned and billing is terminated or scheduled for termination | | archived | The resource was "deleted/purged" and is not listed unless explicitly requested in the filter (i.e. `?state=archived`). | | error | The resource has experienced error during provisioning or after is has been activated | | cancelled | The request for a service was cancelled before provisioning was completed | | operator | Human intervention is needed | | scheduled | The service has been scheduled for provisioning | Please note, that not all implementers _HAVE_ to implement all the listed states. *Sidenote:* If the deleted operation is applied to an object in state `decommissioned` the object will move to state archived. # Sensitive Properties Some properties contain sensitive information and should be redacted when the resource is made available users outside the authorized scope. This is for example the case when an `Account` is flagged as `discoverable`, it becomes available to other API users. In this case only: `id`, `name` and `metro_area_network_presence` should be exposed. If a property is `required` and needs to be redacted, a zero value should be used. For strings this would be an empty string `""`, for numeric values `0` and booleans `false`. Shared resources with sensitive properties: `Account`, `NetworkService` ' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: IX-API version: 2.4.2 openapi: 3.0.0 paths: /accounts: get: description: 'Retrieve a list of `Account`s. This includes all accounts the currently authorized account is managing and the current account itself. Also `discoverable` accounts will be included, however sensitive properties, like `address` or `external_ref` will either not be present or redacted.' operationId: accounts_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by billable in: query name: billable required: false schema: type: integer - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Account' type: array description: 'List of: Account' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - accounts post: description: Create a new account. operationId: accounts_create requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountRequest' description: Account Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - accounts /accounts/{id}: delete: description: 'Accounts can be deleted, when all services and configs are decommissioned or the account is not longer referenced e.g. as a `managing_account` or `billing_account`. Deleting an account will cascade to `contacts` and `role-assignments`. The request will immediately fail, if the above preconditions are not met.' operationId: accounts_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts get: description: Get a single account. operationId: accounts_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts patch: description: Update parts of an account. operationId: accounts_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/AccountPatch' description: Account Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts put: description: Update the entire account. operationId: accounts_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountUpdate' description: Account Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - accounts /auth/refresh: post: description: 'Reauthenticate the API user, issue a new `access_token` and `refresh_token` pair by providing the `refresh_token` in the request body.' operationId: auth_token_refresh requestBody: content: application/json: schema: $ref: '#/components/schemas/RefreshTokenRequest' description: RefreshTokenRequest responses: 201: content: application/json: schema: $ref: '#/components/schemas/AuthToken' description: AuthToken 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html - https://errors.ix-api.net/v2/not-authenticated.html type: string type: object - {} description: Authentication security: [] tags: - auth /auth/token: post: description: 'Authenticate an API user identified by `api_key` and `api_secret`.' operationId: auth_token_create requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthTokenRequest' description: AuthTokenRequest responses: 201: content: application/json: schema: $ref: '#/components/schemas/AuthToken' description: AuthToken 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html - https://errors.ix-api.net/v2/not-authenticated.html type: string type: object - {} description: Authentication security: [] tags: - auth /connections: get: description: List all `connection`s. operationId: connections_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by mode in: query name: mode required: false schema: type: string - description: Filter by mode__is_not in: query name: mode__is_not required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by external_ref in: query name: external_ref required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Connection' type: array description: 'List of: Connection' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - connections post: description: 'Create a new `connection` and request ports allocation. Two workflows for allocating ports is supported and dependent on the `cross_connect_initiator` property of the corresponding `product-offering`: When the initiator is the `subscriber`, a Letter Of Authorization (LOA) can be downloaded from the `/connection//loa` resource. In case the `exchange` is the initiator, the LOA can be uploaded to this resource. Creating a connection will also create PortReservations. See the `port_quantity` and `subscriber_side_demarcs` attributes for details. Please refer to the internet exchange''s api usage guide for implementation specific details.' operationId: connections_create requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionRequest' description: Request a new connection responses: 201: content: application/json: schema: $ref: '#/components/schemas/Connection' description: Connection 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - connections /connections/{id}: delete: description: 'Request decommissioning the connection. The cancellation policy of the connection applies here and is independent from the policy of the network-service and network-service-config using the connection. The connection will assume the state `decommission_requested`. Associated `port-reservation` will be also marked for decommissining and ports will be deallocated. The decommissioning request will *not* cascade to network services and configs.' operationId: connections_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: Service Cancellation Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: Connection 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections get: description: Read a `connection`. operationId: connections_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Connection' description: Connection 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections patch: description: Partially update a connection. operationId: connections_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionPatch' description: Connection Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: Connection 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections put: description: Update a connection. operationId: connections_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectionUpdate' description: Connection Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/Connection' description: Connection 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: connections_cancellation_policy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: Cancellation Policy 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/loa: get: description: 'Download the *Letter Of Authorization* associated with the `connection`. In case of a *subscriber initiated cross-connect*, it will be provided by the exchange.' operationId: connections_loa_download parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections post: description: 'Upload a *Letter Of Authorization* for this `connection`. The LOA is valid for the entire connection and must include all ports.' operationId: connections_loa_upload parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization responses: 200: description: The upload was successful 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/statistics: get: description: 'Read a `Connection`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: connections_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Aggregate' description: Mapping of Aggregated Statistics 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /connections/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `Connection`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: connections_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: Aggregated Statistics Timeseries 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - connections /contacts: get: description: List available contacts managed by the authorized account. operationId: contacts_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Contact' type: array description: 'List of: Contact' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - contacts post: description: Create a new contact. operationId: contacts_create requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' description: Contact Create Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - contacts /contacts/{id}: delete: description: 'Remove a contact. Please note, that a contact can only be removed if it is not longer in use in a network service or config through a role assignment.' operationId: contacts_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound 409: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 409 title: example: There is a conflict preventing success type: enum: - https://errors.ix-api.net/v2/conflict.html type: string type: object - properties: conflict: items: $ref: '#/components/schemas/Conflict' type: array type: object description: ConstraintViolation tags: - contacts get: description: Get a contact by it's id operationId: contacts_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts patch: description: Update parts of a contact operationId: contacts_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/ContactPatch' description: Contact Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts put: description: Update a contact operationId: contacts_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactUpdate' description: Contact Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - contacts /devices: get: description: List available devices operationId: devices_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed__lt in: query name: capability_speed__lt required: false schema: type: integer - description: Filter by capability_speed__lte in: query name: capability_speed__lte required: false schema: type: integer - description: Filter by capability_speed__gt in: query name: capability_speed__gt required: false schema: type: integer - description: Filter by capability_speed__gte in: query name: capability_speed__gte required: false schema: type: integer - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Device' type: array description: 'List of: Device' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - devices /devices/{id}: get: description: Get a specific device identified by id operationId: devices_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Device' description: Device 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - devices /extensions: get: description: List provider extensions to the IX-API. operationId: api_extensions_list responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/ApiExtensions' type: array description: 'List of: Implementation specific API extensions' tags: - extensions /facilities: get: description: Get a (filtered) list of `facilities`. operationId: facilities_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed__lt in: query name: capability_speed__lt required: false schema: type: integer - description: Filter by capability_speed__lte in: query name: capability_speed__lte required: false schema: type: integer - description: Filter by capability_speed__gt in: query name: capability_speed__gt required: false schema: type: integer - description: Filter by capability_speed__gte in: query name: capability_speed__gte required: false schema: type: integer - description: Filter by organisation_name in: query name: organisation_name required: false schema: type: string - description: Filter by metro_area in: query name: metro_area required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by address_country in: query name: address_country required: false schema: type: string - description: Filter by address_locality in: query name: address_locality required: false schema: type: string - description: Filter by postal_code in: query name: postal_code required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Facility' type: array description: 'List of: Facility' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - facilities /facilities/{id}: get: description: Retrieve a facility by id operationId: facilities_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $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: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by network_service_config in: query name: network_service_config required: false schema: type: string - description: Filter by network_feature in: query name: network_feature required: false schema: type: string - description: Filter by network_feature_config in: query name: network_feature_config required: false schema: type: string - description: Filter by version in: query name: version required: false schema: type: integer - description: Filter by fqdn in: query name: fqdn required: false schema: type: string - description: Filter by prefix_length in: query name: prefix_length required: false schema: type: integer - description: Filter by valid_not_before in: query name: valid_not_before required: false schema: type: string - description: Filter by valid_not_after in: query name: valid_not_after required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/IpAddress' type: array description: 'List of: IP-Address' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - ips post: description: Add an ip host address or network prefix. operationId: ips_create requestBody: content: application/json: schema: $ref: '#/components/schemas/IpAddressRequest' description: IP-Address / Prefix allocation Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address tags: - ips /ips/{id}: get: description: Get a single ip addresses by it's id. operationId: ips_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips patch: description: 'Update parts of an ip address. As with the `PUT` opertaion, IP addresses, where you don''t have update rights, will yield a `resource access denied` error when attempting an update. If the ip address was allocated for you, you might not be able to change anything but the `fqdn`.' operationId: ips_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/IpAddressPatch' description: IP-Address Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips put: description: 'Update an ip address object. You can only update IP addresses within your current scope. Not all addresses you can read you can update. If the ip address was allocated for you, you might not be able to change anything but the `fqdn`.' operationId: ips_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/IpAddressUpdate' description: IP-Address Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips /macs: get: description: List all mac addresses managed by the authorized customer. operationId: macs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service_config in: query name: network_service_config required: false schema: type: string - description: Filter by address in: query name: address required: false schema: type: string - description: Filter by valid_not_before in: query name: valid_not_before required: false schema: type: string - description: Filter by valid_not_after in: query name: valid_not_after required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MacAddress' type: array description: 'List of: MAC-Address' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs post: description: Register a mac address. operationId: macs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MacAddressRequest' description: MAC-Address Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs /macs/{id}: delete: description: Remove a mac address. operationId: macs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs get: description: Get a single mac address by it's id. operationId: macs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs /member-joining-rules: get: description: Get a list of joining rules operationId: member_joining_rules_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by network_service in: query name: network_service required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MemberJoiningRule' type: array description: 'List of: Polymorphic Member Joining Rule' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules post: description: Create a member joining rule operationId: member_joining_rules_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRuleRequest' description: Polymorphic Member Joining Rule Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules /member-joining-rules/{id}: delete: description: Delete a joining rule operationId: member_joining_rules_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules get: description: Get a single rule operationId: member_joining_rules_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules patch: description: Partially update a joining rule operationId: member_joining_rules_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/MemberJoiningRulePatch' description: Polymorphic Member Joining Rule Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules put: description: Update a joining rule operationId: member_joining_rules_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRuleUpdate' description: Polymorphic Member Joining Rule Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules /metro-area-networks: get: description: List all MetroAreaNetworks operationId: metro_area_networks_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by metro_area in: query name: metro_area required: false schema: type: string - description: Filter by service_provider in: query name: service_provider required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MetroAreaNetwork' type: array description: 'List of: MetroAreaNetwork' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - metro-area-networks /metro-area-networks/{id}: get: description: Retrieve a MetroAreaNetwork operationId: metro_area_networks_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MetroAreaNetwork' description: MetroAreaNetwork 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - metro-area-networks /metro-areas: get: description: List all MetroAreas operationId: metro_areas_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MetroArea' type: array description: 'List of: MetroArea' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - metro-areas /metro-areas/{id}: get: description: Get a single MetroArea operationId: metro_areas_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MetroArea' type: array description: 'List of: MetroArea' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - metro-areas /network-feature-configs: get: description: Get all network feature configs. operationId: network_feature_configs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - route_server type: string - description: Filter by service_config in: query name: service_config required: false schema: type: string - description: Filter by network_feature in: query name: network_feature required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeatureConfig' type: array description: 'List of: Polymorphic Network Feature Config' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-feature-configs post: description: 'Create a configuration for a `NetworkFeature` defined in the `NetworkFeature`s collection.' operationId: network_feature_configs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfigRequest' description: Polymorphic Network Feature Config Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-feature-configs /network-feature-configs/{id}: delete: description: 'Remove a network feature config. The network feature config will be marked as `decommission_requested`. Decommissioning a network feature config will not cascade to related services or service configs.' operationId: network_feature_configs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs get: description: Get a single network feature config. operationId: network_feature_configs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs patch: description: Update parts of a network feature configuration operationId: network_feature_configs_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkFeatureConfigPatch' description: Polymorphic Network Feauture Config Patch responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs put: description: Update a network feature configuration operationId: network_feature_configs_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfigUpdate' description: Polymorphic Network Feauture Config Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-feature-configs /network-features: get: description: List available network features. operationId: network_features_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by type in: query name: type required: false schema: enum: - route_server type: string - description: Filter by required in: query name: required required: false schema: type: string - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkFeature' type: array description: 'List of: Polymorphic Network Feature' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-features /network-features/{id}: get: description: Get a single network feature by it's id. operationId: network_features_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkFeature' description: Polymorphic Network Feature 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-features /network-service-configs: get: description: Get all `network-service-config`s. operationId: network_service_configs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - exchange_lan - p2p_vc - p2mp_vc - mp2mp_vc - cloud_vc type: string - description: Filter by inner_vlan in: query name: inner_vlan required: false schema: type: integer - description: Filter by outer_vlan in: query name: outer_vlan required: false schema: type: integer - description: Filter by capacity in: query name: capacity required: false schema: type: integer - description: Filter by network_service in: query name: network_service required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string - description: Filter by product_offering in: query name: product_offering required: false schema: type: string - description: Filter by role_assignments explode: false in: query name: role_assignments required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contacts explode: false in: query name: contacts required: false schema: example: id1,id2,id3 items: type: string type: array style: form responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkServiceConfig' type: array description: 'List of: Polymorphic Network Service Config' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-service-configs post: description: Create a `network-service-config`. operationId: network_service_configs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfigRequest' description: Polymorhic Network Service Config Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-service-configs /network-service-configs/{id}: delete: description: 'Request decommissioning the network service configuration. The network service config will assume the state `decommission_requested`. This will cascade to related resources like `network-feature-configs`.' operationId: network_service_configs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: Service Cancellation Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs get: description: Get a `network-service-config` operationId: network_service_configs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs patch: description: Update parts of an exisiting `network-service-config`. operationId: network_service_configs_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkServiceConfigPatch' description: Polymorphic Network Service Config responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs put: description: Update an exisiting `network-service-config` operationId: network_service_configs_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfigUpdate' description: Polymorphic Network Service Config responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: network_service_config_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: Cancellation Policy 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/statistics: get: description: 'Read the aggregated statistics of a `NetworkServiceConfig`. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: network_service_configs_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Aggregate' description: Mapping of Aggregated Statistics 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-service-configs/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `NetworkServiceConfig`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: network_service_configs_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: Aggregated Statistics Timeseries 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-service-configs /network-services: get: description: List available `NetworkService`s. operationId: network_services_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by type in: query name: type required: false schema: enum: - exchange_lan - p2p_vc - p2mp_vc - mp2mp_vc - cloud_vc type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by product_offering in: query name: product_offering required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/NetworkService' type: array description: 'List of: Polymorphic Network Services' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services post: description: Create a new network service operationId: network_services_create requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceRequest' description: Polymorphic Network Service Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services /network-services/{id}: delete: description: 'Request decomissioning of the network service. The network service will enter the state of `decommission_requested`. The request will cascade to related network service and feature configs. An *optional request body* can be provided to request a specific service termination date. If no date is given in the request body, it is assumed to be the earliest possible date. Possible values for `decommission_at` can be queried through the `network_service_cancellation_policy_read` operation. The response will contain the dates on which the changes will be effected.' operationId: network_services_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: Service Cancellation Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services get: description: Get a specific `network-service` by id. operationId: network_services_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services patch: description: Partially update a network service operationId: network_services_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/NetworkServicePatch' description: Polymorphic Network Service Patch responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services put: description: Update a network service operationId: network_services_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceUpdate' description: Polymorphic Network Service Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my service, *when will it be technically decommissioned*? If I cancel my service, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: network_service_cancellation_policy_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: Cancellation Policy 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/change-request: delete: description: Retract or reject a change to the network service. operationId: network_service_change_request_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: NetworkServiceChangeRequest 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services get: description: Get the change request. operationId: network_service_change_request_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: NetworkServiceChangeRequest 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services post: description: 'Request a change to the network service. The B-side participant in a peer-to-peer network service (`p2p_vc`) can issue a change request, expressing a desired change in the capacity. The change is accepted when the A-side has configured the network service and config with the new bandwidth. This is done using the `network_service_update`, `network_service_partial_update`, `network_service_config_update` or `network_service_config_partial_update` operations by the A-side. These changes can sometimes require a change of the product offering. The product offering may only differ in bandwidth. The network service will change its state from `production` into `production_change_pending`. A change can by rejected (by the A-side) or retracted (by the B-side) using the `network_service_change_request_destroy` operation. Only one change request may be issued at a time. A change request by the A-side is not a valid request and will be rejected.' operationId: network_service_change_request_create parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: NetworkServiceChangeRequest responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceChangeRequest' description: NetworkServiceChangeRequest 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - network-services /network-services/{id}/statistics: get: description: 'Read a `NetworkService`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: network_services_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Aggregate' description: Mapping of Aggregated Statistics 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /network-services/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `NetworkService`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: network_services_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: Aggregated Statistics Timeseries 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - network-services /pops: get: description: List all PoPs operationId: pops_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by facility in: query name: facility required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed__lt in: query name: capability_speed__lt required: false schema: type: integer - description: Filter by capability_speed__lte in: query name: capability_speed__lte required: false schema: type: integer - description: Filter by capability_speed__gt in: query name: capability_speed__gt required: false schema: type: integer - description: Filter by capability_speed__gte in: query name: capability_speed__gte required: false schema: type: integer responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PointOfPresence' type: array description: 'List of: Point Of Presence' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - pops /pops/{id}: get: description: Get a single point of presence operationId: pops_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PointOfPresence' description: Point Of Presence 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - pops /port-reservations: get: description: List all port reservations. operationId: port_reservations_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string - description: Filter by port in: query name: port required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/PortReservation' type: array description: 'List of: A PortReservation' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - port-reservations post: description: 'Create a new `PortReservation`. Two workflows for allocating ports is supported and dependent on the `cross_connect_initiator` property of the corresponding `product-offering`: Individual LOAs can be uploaded and downloaded for each PortAllocation using the endpoint `/port-reservations/{id}/loa`. Please refer to the internet exchange''s api usage guide for implementation specific details.' operationId: port_reservations_create requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationRequest' description: A PortReservation responses: 201: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: A PortReservation 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - port-reservations /port-reservations/{id}: delete: description: 'Request decommissioning the port-reservation. The associated `port` will be deallocated and removed from the `connection`.' operationId: port_reservations_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CancellationRequest' description: Service Cancellation Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: A PortReservation 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Requested cancellation date outside of notice period. type: enum: - https://errors.ix-api.net/v2/cancellation-policy-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: charged_until: description: "The date until the service is payed for.\nTypically\ \ `\u2265 decommission_at`." format: date type: string decommission_at: description: 'This field denotes the first possible cancellation date of the service. See the service `cancellation-policy` for details.' format: date type: string type: object description: CancellationPolicyError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations get: description: Retrieve a `PortReservation`. operationId: port_reservations_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: A PortReservation 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations patch: description: Partially update a port reservation. operationId: port_reservations_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationPatch' description: PortReservation Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: A PortReservation 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations put: description: Update a port reservation. operationId: port_reservations_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PortReservationUpdate' description: PortReservation Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/PortReservation' description: A PortReservation 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /port-reservations/{id}/cancellation-policy: get: description: 'The cancellation-policy can be queried to answer the questions: If I cancel my subscription, *when will it be technically decommissioned*? If I cancel my subscription, *until what date will I be charged*? When the query parameter `decommision_at` is not provided it will provide the first possible cancellation date and charge period if cancelled at above date. The granularity of the date field is a day, the start and end of which are to be interpreted by the IXP (some may use UTC, some may use their local time zone).' operationId: port_reservation_cancellation_policy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: 'By providing a date in the format `YYYY-MM-DD` you can query the policy what would happen if you request a decommissioning on this date.' in: query name: decommission_at required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/CancellationPolicy' description: Cancellation Policy 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /port-reservations/{id}/loa: get: description: 'Download the *Letter Of Authorization* associated with the port-reservation. In case of a *subscriber initiated cross-connect*, it will be provided by the exchange.' operationId: port_reservations_loa_download parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations post: description: 'Upload a *Letter Of Authorization* for this `PortReservation`.' operationId: port_reservations_loa_upload parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/octet-stream: schema: format: binary type: string application/pdf: schema: format: binary type: string text/plain: schema: type: string description: A Letter Of Authorization responses: 200: description: The upload was successful 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - port-reservations /ports: get: description: List all ports. operationId: ports_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by state in: query name: state required: false schema: type: string - description: Filter by state__is_not in: query name: state__is_not required: false schema: type: string - description: Filter by media_type in: query name: media_type required: false schema: type: string - description: Filter by pop in: query name: pop required: false schema: type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by device in: query name: device required: false schema: type: string - description: Filter by speed in: query name: speed required: false schema: type: string - description: Filter by connection in: query name: connection required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Port' type: array description: 'List of: Port' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - ports /ports/{id}: get: description: Retrieve a port. operationId: ports_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Port' description: Port 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /ports/{id}/statistics: get: description: 'Read a `Port`s aggregated statistics. A `start` and `end` query parameter can be used to retrieve the aggregated traffic for a given window. In this case the key of the returned statistics is `custom`. With a given `start` and `end` window, the resolution for the aggregated data is chosen by the implementation. You need to check the `accuracy` attribute of the aggregate, to see if the data can be used for the desired usecase. The `accuracy` is the ratio of *total samples* to *expected samples*. If no `start` or `end` parameter is given, a sliding window is assumed and key value pairs of resolutions and aggregated statistics are returned.' operationId: ports_statistics_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Beginning of the traffic aggregation. in: query name: start required: false schema: format: date-time type: string - description: 'End of the traffic aggregation. Default is `now`.' in: query name: end required: false schema: format: date-time type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/PortStatistics' description: Port Statistics 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /ports/{id}/statistics/{aggregate}/timeseries: get: description: 'Read a `Port`s aggregated timeseries. The resolution is defined by the aggregate.' operationId: ports_statistics_timeseries_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Get by aggregate in: path name: aggregate required: true schema: description: '' title: '' type: string - description: Start of the timeseries. in: query name: start required: false schema: format: date-time type: string - description: 'End of the timeseries. Default: `now`' in: query name: end required: false schema: format: date-time type: string - description: 'Select fields from the aggregates to export as a timeseries. Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`' in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/AggregateTimeseries' description: Aggregated Statistics Timeseries 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ports /product-offerings: get: description: List all (filtered) products-offerings available on the platform operationId: product_offerings_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by type in: query name: type required: false schema: enum: - connection - exchange_lan - p2p_vc - mp2mp_vc - p2mp_vc - cloud_vc type: string - description: Filter by resource_type in: query name: resource_type required: false schema: enum: - connection - port_reservation - network_service - network_service_config type: string - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by handover_metro_area in: query name: handover_metro_area required: false schema: type: string - description: Filter by handover_metro_area_network in: query name: handover_metro_area_network required: false schema: type: string - description: Filter by handover_pop in: query name: handover_pop required: false schema: type: string - description: Filter by service_metro_area in: query name: service_metro_area required: false schema: type: string - description: Filter by service_metro_area_network in: query name: service_metro_area_network required: false schema: type: string - description: Filter by service_provider in: query name: service_provider required: false schema: type: string - description: Filter by downgrade_allowed in: query name: downgrade_allowed required: false schema: enum: - 'true' - 'false' type: string - description: Filter by upgrade_allowed in: query name: upgrade_allowed required: false schema: enum: - 'true' - 'false' type: string - description: 'Find product offerings where bandwidth is within the range of `bandwidth_min` and `bandwidth_max`.' in: query name: bandwidth required: false schema: type: integer - description: Filter by physical_port_speed in: query name: physical_port_speed required: false schema: type: integer - description: Filter by service_provider_region in: query name: service_provider_region required: false schema: type: string - description: Filter by service_provider_pop in: query name: service_provider_pop required: false schema: type: string - description: Filter by delivery_method in: query name: delivery_method required: false schema: enum: - dedicated - shared type: string - description: 'For product offerings of type `cloud_vc`, if the `service_provider_workflow` is `provider_first` the `cloud_key` will be used for filtering the relevant offerings.' in: query name: cloud_key required: false schema: type: string - description: 'Returned objects only have properties which are present in the list of fields. The required `type` property is *implicitly* included. The results are *deduplicated*. ' example: handover_metro_area,service_provider in: query name: fields required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/ProductOfferingPatch' type: array description: 'List of: Polymorphic Product Offering' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - product-offerings /product-offerings/{id}: get: description: Get a single products-offering by id. operationId: product_offerings_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/ProductOffering' description: Polymorphic Product Offering 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - product-offerings /role-assignments: get: description: List all role assignments for a contact. operationId: role_assignments_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by contact in: query name: contact required: false schema: type: string - description: Filter by role in: query name: role required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/RoleAssignment' type: array description: 'List of: A role assignment for a contact' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - role-assignments post: description: 'Assign a `Role` to a `Contact`. The contact needs to have all fields filled, which the role requires. If this is not the case a `400` `UnableToFulfill` will be returned.' operationId: role_assignments_create requestBody: content: application/json: schema: $ref: '#/components/schemas/RoleAssignmentRequest' description: A role assignment request responses: 201: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: A role assignment for a contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - role-assignments /role-assignments/{id}: delete: description: 'Remove a role assignment from a contact. If the contact is still in use with a given role required, this will yield an `UnableToFulfill` error.' operationId: role_assignments_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: A role assignment for a contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound 409: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 409 title: example: There is a conflict preventing success type: enum: - https://errors.ix-api.net/v2/conflict.html type: string type: object - properties: conflict: items: $ref: '#/components/schemas/Conflict' type: array type: object description: ConstraintViolation tags: - role-assignments get: description: Get a role assignment for a contact. operationId: role_assignments_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: A role assignment for a contact 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - role-assignments /roles: get: description: List all roles available. operationId: roles_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by contact in: query name: contact required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Role' type: array description: 'List of: Role for a Contact' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication tags: - roles /roles/{id}: get: description: Get a single `Role`. operationId: roles_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Role' description: Role for a Contact 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication tags: - roles security: - OAuth: - ix-api - Bearer: [] servers: - url: /api/v2 tags: - description: 'An `Account` represents an individual customer account, organization or partner involved with the IXP. They are used to consume services from an IXP. Accounts can have a hierarchy, i.e. an account can have sub-accounts. The max-depth of the account-hierarchy may vary by implementer, but it''s safe to assume an account can have sub-accounts. Each `Account` has a state. Only `Account`s in state `production` or `production_change_pending` are ready to consume services. There are `Contact`s associated with each account. Contacts can be assigned for `Role`s via `RoleAssignment`s. Depending on the IXP and the services the account wants to use, contacts with specific roles may be required. A contact with role `legal` is mandatory for an account to become operational. Only accounts with `billing_information` present can be used as a `billing_account`. *Sensitive Properties*: Please note, that an `Account` is a shared resource and fields marked as *sensitive* should be redacted.' name: accounts - description: '**DEPRECATION NOTICE:** Providing the method of authentication is up to the implementer. We suggest using OAuth 2. Open an authorized session with the IX-API. This is equivalent to a ''login'' endpoint. Upon success, you will receive an `access_token` and a `refreh_token`. Both are JWTs and have limited lifetimes. You can get information like their expiry time directly by parsing the tokens. Use the `access_token` as `Bearer` in your `Authorization` header for getting access to the API. When the session (i.e. the `access_token`) expires, use the `refresh_token` (if it''s not yet expired) with the `refresh`-endpoint to reauthenticate and get a fresh `access_token`.' name: auth - description: 'A `Connection` is a functional group of physical ports collected together into a LAG (aka trunk). A `connection` with only one `port` can be also configured as standalone which means no link aggregation is configured on the switch. Ports will be allocated when creating a connection. The number of ports is determined by the `port_quantity` property. The `port_quantity` can be updated later by creating new or deleting `PortReservation`s for this `Connection`.' name: connections - description: 'A `Contact` is a role undertaking a specific responsibility within an account, typically a department or agent of the customer company. `Contact`s are assigned multiple roles by `RoleAssignment`s. A contact is bound to the account by the `consuming_account` property.' name: contacts - description: 'A `Device` is a network hardware device, typically a switch, which is located at a specified facility and inside a `PointOfPresence`. PoPs. They may be physically located at their related PoPs.' name: devices - description: 'The extensions endpoint provides information about additional implementation specific extensions that are not officially part of the IX-API standard.' name: extensions - description: 'A `Facility` is a data centre, with a determined physical address, from which a defined set of PoPs can be accessed' name: facilities - description: 'This endpoint provides a health status response implementing https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html The schema describes the toplevel fields - however the implementation of health checks is up to the IX-API implementor.' name: health - description: 'This endpoint provides information about the IX-API implementation of the exchange. You can find the implemented schema version and supported types and operations here.' name: implementation - description: 'An `IP` is a IPv4 or 6 addresses, with a given validity period. Some services require IP addresses to work. When you are joining an `exchange_lan` network service for example, addresses on the peering lan will be assigned to you.' name: ips - description: 'A `MAC` is a MAC addresses with a given validity period. Some services require MAC addresses to work. Please note that only *unicast* MAC addresses are allowed. You are not alllowed to use multicast or broadcast addresses. The address itself can not be updated after creation. However: It can be expired by changing the `valid_not_before` and `valid_not_after` properties. 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