components: schemas: Account: allOf: - $ref: '#/components/schemas/AccountPartial' - required: - name - metro_area_network_presence - id title: Account type: object AccountPartial: description: Account properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 80 nullable: true type: string id: maxLength: 80 type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array title: PartialAccount type: object AccountRequest: allOf: - $ref: '#/components/schemas/AccountRequestPartial' - required: - name - address title: AccountRequest type: object AccountRequestPartial: description: Account Request properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 80 nullable: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: default: [] description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string title: PartialAccountRequest type: object AccountUpdate: allOf: - $ref: '#/components/schemas/AccountUpdatePartial' - required: - name - metro_area_network_presence - address title: AccountUpdate type: object AccountUpdatePartial: description: Account Update Request properties: address: $ref: '#/components/schemas/Address' billing_information: $ref: '#/components/schemas/BillingInformation' discoverable: default: false description: 'The account will be included for all members of the ix in the list of accounts. Only `id`, `name` and `present_in_metro_area_networks` are provided to other members.' type: boolean external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 80 nullable: true type: string legal_name: description: 'Legal name of the organisation. Only required when it''s different from the account name. ' example: Moon Network Services LLS. maxLength: 80 nullable: true type: string managing_account: description: 'The `id` of a managing account. Can be used for creating a customer hierachy. ' example: IX:Account:231 nullable: true type: string metro_area_network_presence: description: 'Informal list of `MetroAreaNetwork` ids, indicating the presence to other accounts. The list is maintained by the account and can be empty. ' example: - '14021' - '12939' items: type: string type: array name: description: 'Name of the account, how it gets represented in e.g. a "customers list". ' example: Moonpeer Inc. maxLength: 80 type: string title: PartialAccountUpdate type: object Address: allOf: - $ref: '#/components/schemas/AddressPartial' - required: - country - locality - postal_code - street_address title: Address type: object AddressPartial: description: '' properties: country: description: ISO 3166-1 alpha-2 country code, for example DE example: US maxLength: 2 type: string locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 40 type: string post_office_box_number: description: The post office box number for PO box addresses. example: '2335232' maxLength: 80 nullable: true type: string postal_code: description: A postal code. For example, 9404 example: '9409' maxLength: 24 type: string region: description: The region. For example, CA example: CA maxLength: 80 nullable: true type: string street_address: description: The street address. For example, 1600 Amphitheatre Pkwy. example: 1600 Amphitheatre Pkwy. maxLength: 80 type: string title: PartialAddress type: object AllowMemberJoiningRule: allOf: - $ref: '#/components/schemas/AllowMemberJoiningRulePartial' - required: - managing_account - consuming_account - id - network_service - type title: AllowMemberJoiningRule type: object AllowMemberJoiningRulePartial: description: A rule for members joining a private vlan properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: allow type: string required: - type title: PartialAllowMemberJoiningRule type: object AllowMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleRequestPartial' - required: - managing_account - consuming_account - network_service - type title: AllowMemberJoiningRuleRequest type: object AllowMemberJoiningRuleRequestPartial: description: A new vlan member joining rule properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: allow type: string required: - type title: PartialAllowMemberJoiningRuleRequest type: object AllowMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial' - required: - managing_account - consuming_account - type title: AllowMemberJoiningRuleUpdate type: object AllowMemberJoiningRuleUpdatePartial: description: A vlan member joining rule update properties: capacity_max: description: 'An optional rate limit which has precedence over the capacity set in the network service config.' minimum: 1 nullable: true type: integer capacity_min: description: 'Require an optional minimum capacity to join the network service.' minimum: 1 nullable: true type: integer consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: allow type: string required: - type title: PartialAllowMemberJoiningRuleUpdate type: object AuthToken: allOf: - $ref: '#/components/schemas/AuthTokenPartial' - required: - access_token - refresh_token title: AuthToken type: object AuthTokenPartial: description: AuthToken properties: access_token: type: string refresh_token: type: string title: PartialAuthToken type: object AuthTokenRequest: allOf: - $ref: '#/components/schemas/AuthTokenRequestPartial' - required: - api_key - api_secret title: AuthTokenRequest type: object AuthTokenRequestPartial: description: AuthTokenRequest properties: api_key: maxLength: 16 minLength: 16 type: string api_secret: maxLength: 86 minLength: 86 type: string title: PartialAuthTokenRequest type: object Billable: allOf: - $ref: '#/components/schemas/BillablePartial' - required: - billing_account title: Billable type: object BillablePartial: description: Has BillingAccount properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string title: PartialBillable type: object BillingInformation: allOf: - $ref: '#/components/schemas/BillingInformationPartial' - required: - name - address title: BillingInformation type: object BillingInformationPartial: description: 'Optional information required for issuing invoices. Only accounts with `billing_information` present can be used as a `billing_account`.' properties: address: $ref: '#/components/schemas/Address' name: description: 'Name of the organisation receiving invoices. ' example: Moonoc Network Services LLS. maxLength: 80 type: string vat_number: description: 'Value-added tax number, required for european reverse charge system. ' example: UK2300000042 maxLength: 20 minLength: 2 nullable: true type: string title: PartialBillingInformation type: object Cancelable: allOf: - $ref: '#/components/schemas/CancelablePartial' - title: Cancelable type: object CancelablePartial: description: Service or config can be canceled properties: charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." format: date 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.' 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 title: PartialCancelable type: object CancellationPolicy: allOf: - $ref: '#/components/schemas/CancellationPolicyPartial' - required: - decommission_at - charged_until title: CancellationPolicy type: object CancellationPolicyPartial: 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 title: PartialCancellationPolicy type: object CancellationRequest: allOf: - $ref: '#/components/schemas/CancellationRequestPartial' - title: CancellationRequest type: object CancellationRequestPartial: description: Service Cancellation Request properties: decommission_at: description: 'An optional date for scheduling the cancellation and service decommissioning.' format: date type: string title: PartialCancellationRequest type: object CloudNetworkProductOffering: allOf: - $ref: '#/components/schemas/CloudNetworkProductOfferingPartial' - 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 CloudNetworkProductOfferingPartial: description: Cloud Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer 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 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 provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - demarc - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. 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_pop: description: 'The datacenter description of the partner NNI to the service provider. ' example: pop:127388:LD3 nullable: true type: string service_provider_region: description: 'The service provider offers the network service for a specific region. ' example: eu-central-1 nullable: true type: string service_provider_workflow: description: 'When the workflow is `provider_first` the subscriber creates a circuit with the cloud provider and provides a `cloud_key` for filtering the product-offerings. If the workflow is `exchange_first` the IX will create the cloud circuit on the provider side. ' enum: - exchange_first - provider_first example: exchange_first type: string type: example: cloud_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialCloudNetworkProductOffering type: object CloudNetworkService: allOf: - $ref: '#/components/schemas/CloudNetworkServicePartial' - required: - state - id - product_offering - managing_account - consuming_account - billing_account - cloud_key - diversity - provider_ref - type title: CloudNetworkService type: object CloudNetworkServiceConfig: allOf: - $ref: '#/components/schemas/CloudNetworkServiceConfigPartial' - required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - handover - cloud_vlan - type title: CloudNetworkServiceConfig type: object CloudNetworkServiceConfigPartial: description: Cloud Network Service Config properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the configured network service. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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: - type title: PartialCloudNetworkServiceConfig type: object CloudNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/CloudNetworkServiceConfigRequestPartial' - required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - handover - cloud_vlan - type title: CloudNetworkServiceConfigRequest type: object CloudNetworkServiceConfigRequestPartial: description: Cloud Network Service Config Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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: PartialCloudNetworkServiceConfigRequest type: object CloudNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial' - required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - handover - cloud_vlan - type title: CloudNetworkServiceConfigUpdate type: object CloudNetworkServiceConfigUpdatePartial: description: Cloud Network Service Config Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string cloud_vlan: description: 'If the `provider_vlans` property of the `ProductOffering` is `multi`, a numeric value refers to a specific vlan on the service provider side. Otherwise, if set to `null`, it refers to all unmatched vlan ids on the service provider side. (All vlan ids from the service provider side are presented as tags within any vlans specified in `vlan_config`.) If the `provider_vlans` property of the `ProductOffering` is `single`, the `cloud_vlan` MUST be `null` or MUST NOT be provided.' format: int32 maximum: 4094 minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string handover: description: 'The handover enumerates the connection and is required for checking diversity constraints. It must be within `1 <= x <= network_service.diversity`. ' example: 1 minimum: 1 type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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: PartialCloudNetworkServiceConfigUpdate type: object CloudNetworkServicePartial: description: Cloud Network Service properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." format: date type: string cloud_key: type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' 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.' 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. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array product_offering: type: string provider_ref: description: 'For a cloud network service with the exchange first workflow, the `provider_ref` will be a reference to a resource of the cloud provider. (E.g. the UUID of a virtual circuit.) The `provider_ref` is managed by the exchange and its meaning may vary between different cloud services. ' example: 331050d5-76fb-498b-b72a-248520278fbd nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array type: example: cloud_vc type: string required: - type title: PartialCloudNetworkService type: object CloudNetworkServiceRequest: allOf: - $ref: '#/components/schemas/CloudNetworkServiceRequestPartial' - required: - product_offering - managing_account - consuming_account - billing_account - cloud_key - type title: CloudNetworkServiceRequest type: object CloudNetworkServiceRequestPartial: description: Cloud Network Service Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer cloud_key: type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: cloud_vc type: string required: - type title: PartialCloudNetworkServiceRequest type: object Conflict: allOf: - $ref: '#/components/schemas/ConflictPartial' - required: - resource_type - resource_id - resource_property - remote_resource_type - remote_resource_id title: Conflict type: object ConflictPartial: 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 title: PartialConflict type: object Connection: allOf: - $ref: '#/components/schemas/ConnectionPartial' - 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 ConnectionPartial: description: Connection properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. 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: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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 title: PartialConnection type: object ConnectionProductOffering: allOf: - $ref: '#/components/schemas/ConnectionProductOfferingPartial' - 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 ConnectionProductOfferingPartial: 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 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 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 - demarc - 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 type: example: connection type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialConnectionProductOffering type: object ConnectionRequest: allOf: - $ref: '#/components/schemas/ConnectionRequestPartial' - required: - managing_account - consuming_account - billing_account - role_assignments - mode - product_offering - port_quantity title: ConnectionRequest type: object ConnectionRequestPartial: description: Request a new connection properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. 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. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string 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. ' 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 title: PartialConnectionRequest type: object ConnectionUpdate: allOf: - $ref: '#/components/schemas/ConnectionUpdatePartial' - required: - managing_account - consuming_account - billing_account - role_assignments - mode - product_offering title: ConnectionUpdate type: object ConnectionUpdatePartial: description: Connection Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string lacp_timeout: description: 'This sets the LACP Timeout mode. Both ends of the connections need to be configured the same. ' enum: - slow - fast example: slow nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string mode: description: 'Sets the mode of the connection. The mode can be: - `lag_lacp`: connection is build as a LAG with LACP enabled - `lag_static`: connection is build as LAG with static configuration - `flex_ethernet`: connect is build as a FlexEthernet channel - `standalone`: only one port is allowed in this connection without any bundling. ' enum: - lag_lacp - lag_static - flex_ethernet - standalone example: lag_lacp type: string 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. ' 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: PartialConnectionUpdate type: object Consumable: allOf: - $ref: '#/components/schemas/ConsumablePartial' - required: - consuming_account title: Consumable type: object ConsumablePartial: description: Consumable properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string title: PartialConsumable type: object Contact: allOf: - $ref: '#/components/schemas/ContactPartial' - required: - managing_account - consuming_account - id title: Contact type: object ContactPartial: description: Contact properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string title: PartialContact type: object ContactRequest: allOf: - $ref: '#/components/schemas/ContactRequestPartial' - required: - managing_account - consuming_account title: ContactRequest type: object ContactRequestPartial: description: A contact creation request properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string title: PartialContactRequest type: object ContactUpdate: allOf: - $ref: '#/components/schemas/ContactUpdatePartial' - required: - managing_account - consuming_account title: ContactUpdate type: object ContactUpdatePartial: description: A contact update properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string email: description: 'The email of the legal company entity. ' example: info@moon-peer.net maxLength: 80 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string name: description: A name of a person or an organisation example: Some A. Name maxLength: 128 nullable: true type: string telephone: description: The telephone number in E.164 Phone Number Formatting example: '+442071838750' maxLength: 40 nullable: true type: string title: PartialContactUpdate type: object Contactable: allOf: - $ref: '#/components/schemas/ContactablePartial' - required: - role_assignments title: Contactable type: object ContactablePartial: description: Contactable properties: role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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: PartialContactable type: object Contractable: allOf: - $ref: '#/components/schemas/ContractablePartial' - title: Contractable type: object ContractablePartial: description: Invoiceable properties: contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string title: PartialContractable type: object DenyMemberJoiningRule: allOf: - $ref: '#/components/schemas/DenyMemberJoiningRulePartial' - required: - managing_account - consuming_account - id - network_service - type title: DenyMemberJoiningRule type: object DenyMemberJoiningRulePartial: description: A rule for members joining a private vlan properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: deny type: string required: - type title: PartialDenyMemberJoiningRule type: object DenyMemberJoiningRuleRequest: allOf: - $ref: '#/components/schemas/DenyMemberJoiningRuleRequestPartial' - required: - managing_account - consuming_account - network_service - type title: DenyMemberJoiningRuleRequest type: object DenyMemberJoiningRuleRequestPartial: description: A new vlan member joining rule properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_service: type: string type: example: deny type: string required: - type title: PartialDenyMemberJoiningRuleRequest type: object DenyMemberJoiningRuleUpdate: allOf: - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial' - required: - managing_account - consuming_account - type title: DenyMemberJoiningRuleUpdate type: object DenyMemberJoiningRuleUpdatePartial: description: A vlan member joining rule update properties: consuming_account: description: 'The `id` of the account to which access to the network service should be granted or denied. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string type: example: deny type: string required: - type title: PartialDenyMemberJoiningRuleUpdate type: object Device: allOf: - $ref: '#/components/schemas/DevicePartial' - required: - name - pop - id title: Device type: object DeviceCapability: allOf: - $ref: '#/components/schemas/DeviceCapabilityPartial' - title: DeviceCapability type: object DeviceCapabilityPartial: description: Device Capability properties: availability: description: 'Count of available ports on device ' example: 23 format: int32 maximum: 2147483647 minimum: 0 readOnly: true type: integer max_lag: description: Maximum count of ports which can be bundled to a max_lag example: 8 format: int32 maximum: 32767 minimum: 0 readOnly: true type: integer media_type: description: 'The media type of the port (e.g. 1000BASE-LX, 10GBASE-LR, ...) ' example: 1000BASE-LX maxLength: 20 readOnly: true type: string speed: description: 'Speed of port in Mbit/s ' example: 1000 readOnly: true type: integer title: PartialDeviceCapability type: object DeviceConnection: allOf: - $ref: '#/components/schemas/DeviceConnectionPartial' - required: - capacity_max - device - connected_device - id title: DeviceConnection type: object DeviceConnectionPartial: description: Device Connection properties: capacity_max: format: int32 maximum: 2147483647 minimum: 0 type: integer connected_device: type: string device: type: string id: maxLength: 80 type: string title: PartialDeviceConnection type: object DevicePartial: description: Device properties: capabilities: items: $ref: '#/components/schemas/DeviceCapability' type: array facility: description: 'Identifier of the facility where the device is physically based.' readOnly: true type: string id: maxLength: 80 type: string name: description: 'Name of the device ' example: edge2.moon.space-ix.net maxLength: 180 type: string pop: description: The `PointOfPresence` the device is in. type: string title: PartialDevice type: object EVPNetworkService: allOf: - $ref: '#/components/schemas/EVPNetworkServicePartial' - title: EVPNetworkService type: object EVPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/EVPNetworkServiceConfigPartial' - title: EVPNetworkServiceConfig type: object EVPNetworkServiceConfigPartial: description: Ethernet Virtual Private Network Service Config properties: 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 title: PartialEVPNetworkServiceConfig type: object EVPNetworkServicePartial: description: Ethernet Virtual Private Network Services properties: 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 title: PartialEVPNetworkService type: object Event: allOf: - $ref: '#/components/schemas/EventPartial' - required: - serial - type - payload - timestamp title: Event type: object EventPartial: description: Event properties: account: readOnly: true type: string payload: type: object serial: type: integer timestamp: format: date-time type: string type: type: string title: PartialEvent type: object ExchangeLanNetworkProductOffering: allOf: - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial' - required: - id - name - display_name - 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 ExchangeLanNetworkProductOfferingPartial: description: Exchange Lan Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer 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 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 provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - demarc - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. 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 type: example: exchange_lan type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialExchangeLanNetworkProductOffering type: object ExchangeLanNetworkService: allOf: - $ref: '#/components/schemas/ExchangeLanNetworkServicePartial' - required: - state - id - managing_account - consuming_account - name - metro_area_network - network_features - subnet_v4 - subnet_v6 - type title: ExchangeLanNetworkService type: object ExchangeLanNetworkServiceConfig: allOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial' - required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - asns - listed - product_offering - type title: ExchangeLanNetworkServiceConfig type: object ExchangeLanNetworkServiceConfigPartial: description: Exchange Lan Network Service Config properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialExchangeLanNetworkServiceConfig type: object ExchangeLanNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial' - required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - asns - listed - product_offering - type title: ExchangeLanNetworkServiceConfigRequest type: object ExchangeLanNetworkServiceConfigRequestPartial: description: Exchange Lan Network Service Config Request properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string 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. ' 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: PartialExchangeLanNetworkServiceConfigRequest type: object ExchangeLanNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial' - required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - asns - listed - type title: ExchangeLanNetworkServiceConfigUpdate type: object ExchangeLanNetworkServiceConfigUpdatePartial: description: Exchange Lan Network Service Config Update properties: asns: items: format: int64 maximum: 4294967295 minimum: 0 type: integer type: array billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string ips: description: 'A list of ip-address IDs. Allocation of IP Addresses might be deferred depending on the IXP implementation. No assumption should be made.' items: type: string readOnly: true type: array listed: description: The customer wants to be featured on the member list type: boolean macs: description: A list of mac-address IDs. items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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: PartialExchangeLanNetworkServiceConfigUpdate type: object ExchangeLanNetworkServicePartial: description: Exchange Lan Network Service properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: type: string ixfdb_ixid: description: id of ixfdb nullable: true type: integer managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string metro_area_network: description: 'Id of the `MetroAreaNetwork` where the exchange lan network service is directly provided. Same as `service_metro_area_network` on the related `ProductOffering`. ' example: man:293225:LON2 type: string name: description: Exchange-dependent service name, will be shown on the invoice. maxLength: 40 type: string network_features: items: type: string type: array nsc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The `RoleAssignment` is associated through the `role_assignments` list property of the network service configuration.' items: type: string readOnly: true type: array peeringdb_ixid: description: PeeringDB ixid nullable: true type: integer product_offering: 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: - type title: PartialExchangeLanNetworkService type: object ExternalReference: allOf: - $ref: '#/components/schemas/ExternalReferencePartial' - title: ExternalReference type: object ExternalReferencePartial: description: External Reference properties: external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string title: PartialExternalReference type: object Facility: allOf: - $ref: '#/components/schemas/FacilityPartial' - required: - name - metro_area - address_country - address_locality - address_region - postal_code - street_address - organisation_name - pops - id title: Facility type: object FacilityPartial: description: Facility properties: address_country: description: 'ISO 3166-1 alpha-2 country code, for example DE ' example: US maxLength: 2 type: string address_locality: description: The locality/city. For example, Mountain View. example: Mountain View maxLength: 80 type: string address_region: description: The region. For example, CA example: CA maxLength: 80 type: string id: maxLength: 80 type: string metro_area: description: 'Id of the `MetroArea` the DC is located in. ' example: met:93214980:BER type: string name: description: 'Name of the Datacenter as called by the operator ' example: Crater DC Moon 1 maxLength: 80 type: string organisation_name: description: 'Name of Datacenter operator ' example: Moon Datacenters maxLength: 80 type: string peeringdb_facility_id: description: '[PeeringDB](https://www.peeringdb.com) facitlity ID, can be extracted from the url https://www.peeringdb.com/fac/$id ' example: 103 format: int32 maximum: 2147483647 minimum: 0 nullable: true type: integer pops: description: List of pops 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 title: PartialFacility type: object HealthResponse: allOf: - $ref: '#/components/schemas/HealthResponsePartial' - required: - status title: HealthResponse type: object HealthResponsePartial: description: Health Status Response properties: checks: additionalProperties: additionalProperties: type: string type: object description: 'The "checks" object MAY have a number of unique keys, one for each logical downstream dependency or sub-component. Since each sub-component may be backed by several nodes with varying health statuses, these keys point to arrays of objects. In case of a single-node sub-component (or if presence of nodes is not relevant), a single-element array SHOULD be used as the value, for consistency. Please see https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html#the-checks-object for details.' type: object description: description: A human-friendly description of the service. type: string links: additionalProperties: type: string description: 'Is an object containing link relations and URIs [RFC3986] for external links that MAY contain more information about the health of the endpoint.' type: object notes: description: Array of notes relevant to current state of health. items: type: string type: array output: description: Raw error output, in case of "fail" or "warn" states. type: string releaseId: description: 'Release version of the api implementation. ' example: 1.23.0 type: string serviceId: description: A unique identifier of the service, in the application scope. type: string status: description: 'status indicates whether the service status is acceptable or not.' enum: - pass - fail - warn type: string version: description: 'Public version of the service. ' example: '1' type: string title: PartialHealthResponse type: object IXPSpecificFeatureFlag: allOf: - $ref: '#/components/schemas/IXPSpecificFeatureFlagPartial' - required: - name - description - mandatory title: IXPSpecificFeatureFlag type: object IXPSpecificFeatureFlagConfig: allOf: - $ref: '#/components/schemas/IXPSpecificFeatureFlagConfigPartial' - required: - name - enabled title: IXPSpecificFeatureFlagConfig type: object IXPSpecificFeatureFlagConfigPartial: 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 title: PartialIXPSpecificFeatureFlagConfig type: object IXPSpecificFeatureFlagPartial: description: IXP-Specific Feature Flag properties: description: description: 'The description of the feature flag. ' example: RPKI reject invalid filtering is available maxLength: 80 type: string 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 title: PartialIXPSpecificFeatureFlag type: object ImplementationResponse: allOf: - $ref: '#/components/schemas/ImplementationResponsePartial' - required: - schema_version - supported_network_service_types - supported_network_service_config_types - supported_network_feature_types - supported_network_feature_config_types - supported_operations title: ImplementationResponse type: object ImplementationResponsePartial: 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 title: PartialImplementationResponse type: object Invoiceable: allOf: - $ref: '#/components/schemas/InvoiceablePartial' - required: - billing_account title: Invoiceable type: object InvoiceablePartial: description: Invoiceable properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string title: PartialInvoiceable type: object IpAddress: allOf: - $ref: '#/components/schemas/IpAddressPartial' - required: - managing_account - consuming_account - version - address - prefix_length - id title: IpAddress type: object IpAddressPartial: description: IP-Address properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer title: PartialIpAddress type: object IpAddressRequest: allOf: - $ref: '#/components/schemas/IpAddressRequestPartial' - required: - managing_account - consuming_account - version - address - prefix_length title: IpAddressRequest type: object IpAddressRequestPartial: description: IP-Address / Prefix allocation Request properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer title: PartialIpAddressRequest type: object IpAddressUpdate: allOf: - $ref: '#/components/schemas/IpAddressUpdatePartial' - required: - managing_account - consuming_account - version - address - prefix_length title: IpAddressUpdate type: object IpAddressUpdatePartial: description: IP-Address Update properties: address: description: 'IPv4 or IPv6 Address in the following format: - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) - IPv6: hexadecimal colon separated notation ' example: 23.142.52.0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string fqdn: maxLength: 100 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string prefix_length: description: 'The CIDR ip prefix length ' example: 23 format: int32 maximum: 128 minimum: 0 type: integer valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string version: description: 'The version of the internet protocol. ' example: 4 type: integer title: PartialIpAddressUpdate type: object MP2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPartial' - required: - id - name - display_name - 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 MP2MPNetworkProductOfferingPartial: description: MP2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer 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 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 provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - demarc - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. 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 type: example: mp2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialMP2MPNetworkProductOffering type: object MP2MPNetworkService: allOf: - $ref: '#/components/schemas/MP2MPNetworkServicePartial' - required: - state - id - product_offering - managing_account - consuming_account - billing_account - member_joining_rules - network_features - type title: MP2MPNetworkService type: object MP2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPartial' - required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: MP2MPNetworkServiceConfig type: object MP2MPNetworkServiceConfigPartial: description: MP2MP Network Service Config properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialMP2MPNetworkServiceConfig type: object MP2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial' - required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: MP2MPNetworkServiceConfigRequest type: object MP2MPNetworkServiceConfigRequestPartial: description: MP2MP Network Service Config Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string 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. ' 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: PartialMP2MPNetworkServiceConfigRequest type: object MP2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/MP2MPNetworkServiceConfigUpdatePartial' - required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - type title: MP2MPNetworkServiceConfigUpdate type: object MP2MPNetworkServiceConfigUpdatePartial: description: MP2MP Network Service Config Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string macs: items: type: string type: array managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array 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. ' 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: PartialMP2MPNetworkServiceConfigUpdate type: object MP2MPNetworkServicePartial: description: MP2MP Network Service properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialMP2MPNetworkService type: object MP2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/MP2MPNetworkServiceRequestPartial' - required: - product_offering - managing_account - consuming_account - billing_account - type title: MP2MPNetworkServiceRequest type: object MP2MPNetworkServiceRequestPartial: description: MP2MP Network Service Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string 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. 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. ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: mp2mp_vc type: string required: - type title: PartialMP2MPNetworkServiceRequest type: object MacAddress: allOf: - $ref: '#/components/schemas/MacAddressPartial' - required: - managing_account - consuming_account - address - id title: MacAddress type: object MacAddressPartial: description: MAC-Address properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string title: PartialMacAddress type: object MacAddressRequest: allOf: - $ref: '#/components/schemas/MacAddressRequestPartial' - required: - managing_account - consuming_account - address title: MacAddressRequest type: object MacAddressRequestPartial: description: MAC-Address Request properties: address: description: 'Unicast MAC address, formatted hexadecimal values with colons. ' example: 42:23:bc:8e:b8:b0 type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string valid_not_after: format: date-time nullable: true type: string valid_not_before: format: date-time nullable: true type: string title: PartialMacAddressRequest type: object Manageable: allOf: - $ref: '#/components/schemas/ManageablePartial' - required: - managing_account title: Manageable type: object ManageablePartial: description: Managed properties: managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string title: PartialManageable type: object MemberJoiningRule: description: Polymorphic Member Joining Rule discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRule' deny: '#/components/schemas/DenyMemberJoiningRule' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRule' - $ref: '#/components/schemas/DenyMemberJoiningRule' title: MemberJoiningRule MemberJoiningRulePartial: description: Polymorphic Member Joining Rule discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRulePartial' deny: '#/components/schemas/DenyMemberJoiningRulePartial' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRulePartial' - $ref: '#/components/schemas/DenyMemberJoiningRulePartial' title: MemberJoiningRule (partial) MemberJoiningRuleRequest: description: Polymorphic Member Joining Rule Request discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleRequest' deny: '#/components/schemas/DenyMemberJoiningRuleRequest' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleRequest' - $ref: '#/components/schemas/DenyMemberJoiningRuleRequest' title: MemberJoiningRuleRequest MemberJoiningRuleRequestPartial: description: Polymorphic Member Joining Rule Request discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleRequestPartial' deny: '#/components/schemas/DenyMemberJoiningRuleRequestPartial' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleRequestPartial' - $ref: '#/components/schemas/DenyMemberJoiningRuleRequestPartial' title: MemberJoiningRuleRequest (partial) MemberJoiningRuleUpdate: description: Polymorphic Member Joining Rule Update discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleUpdate' deny: '#/components/schemas/DenyMemberJoiningRuleUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdate' - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdate' title: MemberJoiningRuleUpdate MemberJoiningRuleUpdatePartial: description: Polymorphic Member Joining Rule Update discriminator: mapping: allow: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial' deny: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial' propertyName: type oneOf: - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial' - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial' title: MemberJoiningRuleUpdate (partial) MetroArea: allOf: - $ref: '#/components/schemas/MetroAreaPartial' - required: - id - un_locode - iata_code - display_name - facilities - metro_area_networks title: MetroArea type: object MetroAreaNetwork: allOf: - $ref: '#/components/schemas/MetroAreaNetworkPartial' - required: - name - metro_area - service_provider - pops - id title: MetroAreaNetwork type: object MetroAreaNetworkPartial: description: MetroAreaNetwork properties: id: maxLength: 80 type: string metro_area: description: 'The id of the metro area. ' example: met:199399:FRA type: string name: description: 'The name of the metro area network. ' example: MY-IX-FRA1 maxLength: 32 type: string pops: description: List of pops in the metro area network. items: type: string type: array service_provider: description: 'The service provider is operating the network. Usually the exchange. ' example: MY-IX maxLength: 128 type: string title: PartialMetroAreaNetwork type: object MetroAreaPartial: description: MetroArea properties: display_name: description: 'The name of the metro area. Likely the same as the IATA code. ' example: FRA maxLength: 64 type: string facilities: description: List of facilities the metro area network. items: type: string type: array iata_code: description: 'The three letter IATA airport code for identiying the metro area. ' example: FRA maxLength: 3 type: string id: maxLength: 80 type: string metro_area_networks: description: List of networks in the metro area. items: type: string type: array un_locode: description: 'The UN/LOCODE for identifying the metro area. ' example: DE FRA maxLength: 6 type: string title: PartialMetroArea type: object NetworkFeature: description: Polymorphic Network Feature discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeature' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeature' title: NetworkFeature NetworkFeatureConfig: description: Polymorphic Network Feature Config discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfig' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfig' title: NetworkFeatureConfig NetworkFeatureConfigPartial: description: Polymorphic Network Feature Config discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPartial' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPartial' title: NetworkFeatureConfig (partial) NetworkFeatureConfigRequest: description: Polymorphic Network Feature Config Request discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequest' title: NetworkFeatureConfigRequest NetworkFeatureConfigRequestPartial: description: Polymorphic Network Feature Config Request discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial' title: NetworkFeatureConfigRequest (partial) NetworkFeatureConfigUpdate: description: Polymorphic Network Feauture Config Update discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate' title: NetworkFeatureConfigUpdate NetworkFeatureConfigUpdatePartial: description: Polymorphic Network Feauture Config Update discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial' title: NetworkFeatureConfigUpdate (partial) NetworkFeaturePartial: description: Polymorphic Network Feature discriminator: mapping: route_server: '#/components/schemas/RouteServerNetworkFeaturePartial' propertyName: type oneOf: - $ref: '#/components/schemas/RouteServerNetworkFeaturePartial' title: NetworkFeature (partial) NetworkService: description: Polymorphic Network Services discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' exchange_lan: '#/components/schemas/ExchangeLanNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkService' - $ref: '#/components/schemas/P2PNetworkService' - $ref: '#/components/schemas/P2MPNetworkService' - $ref: '#/components/schemas/MP2MPNetworkService' - $ref: '#/components/schemas/CloudNetworkService' title: NetworkService NetworkServiceChangeRequest: allOf: - $ref: '#/components/schemas/NetworkServiceChangeRequestPartial' - required: - product_offering title: NetworkServiceChangeRequest type: object NetworkServiceChangeRequestPartial: description: NetworkServiceChangeRequest properties: capacity: description: 'The desired capacity of the service in Mbps. Must be within the range of `bandwidth_min` and `bandwidth_max` of the `ProductOffering`. When `null` the maximum capacity wil be used.' minimum: 1 nullable: true type: integer product_offering: description: 'Migrate to a diffrent product offering. Please note, that the offering only may differ in bandwidth.' type: string title: PartialNetworkServiceChangeRequest type: object NetworkServiceConfig: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfig' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfig' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfig' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfig' p2p_vc: '#/components/schemas/P2PNetworkServiceConfig' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfig' - $ref: '#/components/schemas/P2PNetworkServiceConfig' - $ref: '#/components/schemas/P2MPNetworkServiceConfig' - $ref: '#/components/schemas/MP2MPNetworkServiceConfig' - $ref: '#/components/schemas/CloudNetworkServiceConfig' title: NetworkServiceConfig NetworkServiceConfigPartial: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigPartial' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigPartial' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigPartial' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigPartial' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial' - $ref: '#/components/schemas/P2PNetworkServiceConfigPartial' - $ref: '#/components/schemas/P2MPNetworkServiceConfigPartial' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPartial' - $ref: '#/components/schemas/CloudNetworkServiceConfigPartial' title: NetworkServiceConfig (partial) NetworkServiceConfigRequest: description: Polymorhic Network Service Config Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequest' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequest' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest' - $ref: '#/components/schemas/P2PNetworkServiceConfigRequest' - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/CloudNetworkServiceConfigRequest' title: NetworkServiceConfigRequest NetworkServiceConfigRequestPartial: description: Polymorhic Network Service Config Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequestPartial' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequestPartial' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/P2PNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/CloudNetworkServiceConfigRequestPartial' title: NetworkServiceConfigRequest (partial) NetworkServiceConfigUpdate: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdate' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdate' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate' - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdate' - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest' - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdate' title: NetworkServiceConfigUpdate NetworkServiceConfigUpdatePartial: description: Polymorphic Network Service Config discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial' exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial' p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial' p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial' - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial' - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial' - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial' title: NetworkServiceConfigUpdate (partial) NetworkServiceDeleteResponse: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkService' mp2mp_vc: '#/components/schemas/MP2MPNetworkService' p2mp_vc: '#/components/schemas/P2MPNetworkService' p2p_vc: '#/components/schemas/P2PNetworkService' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkService' - $ref: '#/components/schemas/P2MPNetworkService' - $ref: '#/components/schemas/MP2MPNetworkService' - $ref: '#/components/schemas/CloudNetworkService' title: NetworkServiceDeleteResponse NetworkServiceDeleteResponsePartial: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServicePartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePartial' p2mp_vc: '#/components/schemas/P2MPNetworkServicePartial' p2p_vc: '#/components/schemas/P2PNetworkServicePartial' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServicePartial' - $ref: '#/components/schemas/P2MPNetworkServicePartial' - $ref: '#/components/schemas/MP2MPNetworkServicePartial' - $ref: '#/components/schemas/CloudNetworkServicePartial' title: NetworkServiceDeleteResponse (partial) NetworkServicePartial: description: Polymorphic Network Services discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServicePartial' exchange_lan: '#/components/schemas/ExchangeLanNetworkServicePartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePartial' p2mp_vc: '#/components/schemas/P2MPNetworkServicePartial' p2p_vc: '#/components/schemas/P2PNetworkServicePartial' propertyName: type oneOf: - $ref: '#/components/schemas/ExchangeLanNetworkServicePartial' - $ref: '#/components/schemas/P2PNetworkServicePartial' - $ref: '#/components/schemas/P2MPNetworkServicePartial' - $ref: '#/components/schemas/MP2MPNetworkServicePartial' - $ref: '#/components/schemas/CloudNetworkServicePartial' title: NetworkService (partial) NetworkServiceRequest: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceRequest' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest' p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest' p2p_vc: '#/components/schemas/P2PNetworkServiceRequest' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServiceRequest' - $ref: '#/components/schemas/P2MPNetworkServiceRequest' - $ref: '#/components/schemas/MP2MPNetworkServiceRequest' - $ref: '#/components/schemas/CloudNetworkServiceRequest' title: NetworkServiceRequest NetworkServiceRequestPartial: description: Polymorphic Network Service Request discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkServiceRequestPartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequestPartial' p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequestPartial' p2p_vc: '#/components/schemas/P2PNetworkServiceRequestPartial' propertyName: type oneOf: - $ref: '#/components/schemas/P2PNetworkServiceRequestPartial' - $ref: '#/components/schemas/P2MPNetworkServiceRequestPartial' - $ref: '#/components/schemas/MP2MPNetworkServiceRequestPartial' - $ref: '#/components/schemas/CloudNetworkServiceRequestPartial' title: NetworkServiceRequest (partial) Ownable: allOf: - $ref: '#/components/schemas/OwnablePartial' - required: - managing_account - consuming_account title: Ownable type: object OwnablePartial: description: Ownable properties: consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string title: PartialOwnable type: object P2MPNetworkProductOffering: allOf: - $ref: '#/components/schemas/P2MPNetworkProductOfferingPartial' - required: - id - name - display_name - 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 P2MPNetworkProductOfferingPartial: description: P2MP Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer 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 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 provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - demarc - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. 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 type: example: p2mp_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialP2MPNetworkProductOffering type: object P2MPNetworkService: allOf: - $ref: '#/components/schemas/P2MPNetworkServicePartial' - required: - state - id - product_offering - managing_account - consuming_account - billing_account - network_features - member_joining_rules - type title: P2MPNetworkService type: object P2MPNetworkServiceConfig: allOf: - $ref: '#/components/schemas/P2MPNetworkServiceConfigPartial' - required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: P2MPNetworkServiceConfig type: object P2MPNetworkServiceConfigPartial: description: P2MP Network Service Config properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialP2MPNetworkServiceConfig type: object P2MPNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial' - required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: P2MPNetworkServiceConfigRequest type: object P2MPNetworkServiceConfigRequestPartial: description: P2MP Network Service Config Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string 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. ' 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: PartialP2MPNetworkServiceConfigRequest type: object P2MPNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/P2MPNetworkServiceConfigUpdatePartial' - required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - type title: P2MPNetworkServiceConfigUpdate type: object P2MPNetworkServiceConfigUpdatePartial: description: P2MP Network Service Config Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array 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. ' 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: PartialP2MPNetworkServiceConfigUpdate type: object P2MPNetworkServicePartial: description: P2MP Network Service properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialP2MPNetworkService type: object P2MPNetworkServiceRequest: allOf: - $ref: '#/components/schemas/P2MPNetworkServiceRequestPartial' - required: - product_offering - managing_account - consuming_account - billing_account - type title: P2MPNetworkServiceRequest type: object P2MPNetworkServiceRequestPartial: description: P2MP Network Service Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string 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. 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. ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2mp_vc type: string required: - type title: PartialP2MPNetworkServiceRequest type: object P2PNetworkProductOffering: allOf: - $ref: '#/components/schemas/P2PNetworkProductOfferingPartial' - required: - id - name - display_name - 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 P2PNetworkProductOfferingPartial: description: P2P Network Product Offering properties: bandwidth_max: description: 'When not `null`, this value enforces a mandatory rate limit for all network service configs.' minimum: 0 nullable: true type: integer bandwidth_min: description: 'When configuring access to the network service, at least this `capacity` must be provided.' minimum: 0 nullable: true type: integer 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 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 provider_vlans: description: The `NetworkService` provides `single` or `multi`ple vlans. enum: - single - multi type: string resource_type: description: 'The resource type refers to an ix-api resource. ' enum: - connection - demarc - network_service - network_service_config example: network_service type: string service_metro_area: description: 'Id of the `MetroArea`. The service is delivered in this metro area. 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 type: example: p2p_vc type: string upgrade_allowed: description: 'Indicates if the service can be migrated to a higher bandwidth.' type: boolean required: - type title: PartialP2PNetworkProductOffering type: object P2PNetworkService: allOf: - $ref: '#/components/schemas/P2PNetworkServicePartial' - required: - state - id - product_offering - managing_account - consuming_account - billing_account - joining_member_account - type title: P2PNetworkService type: object P2PNetworkServiceConfig: allOf: - $ref: '#/components/schemas/P2PNetworkServiceConfigPartial' - required: - state - id - network_service - managing_account - consuming_account - billing_account - role_assignments - connection - vlan_config - type title: P2PNetworkServiceConfig type: object P2PNetworkServiceConfigPartial: description: P2P Network Service Config properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialP2PNetworkServiceConfig type: object P2PNetworkServiceConfigRequest: allOf: - $ref: '#/components/schemas/P2PNetworkServiceConfigRequestPartial' - required: - managing_account - consuming_account - network_service - billing_account - role_assignments - connection - vlan_config - type title: P2PNetworkServiceConfigRequest type: object P2PNetworkServiceConfigRequestPartial: description: P2P Network Service Config Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array network_service: description: The id of the `NetworkService` to configure. type: string 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. ' 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: PartialP2PNetworkServiceConfigRequest type: object P2PNetworkServiceConfigUpdate: allOf: - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial' - required: - managing_account - consuming_account - vlan_config - billing_account - role_assignments - connection - type title: P2PNetworkServiceConfigUpdate type: object P2PNetworkServiceConfigUpdatePartial: description: P2P Network Service Config Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer connection: description: The id of the connection to use for this `NetworkServiceConfig`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string network_feature_configs: description: 'A list of ids of `NetworkFeatureConfig`s. ' example: - '12356' - '43829' items: type: string readOnly: true type: array 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. ' 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: PartialP2PNetworkServiceConfigUpdate type: object P2PNetworkServicePartial: description: P2P Network Service properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string capacity: description: 'The capacity of the service in Mbps. When null, the maximum capacity will be used.' minimum: 1 nullable: true type: integer charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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: - type title: PartialP2PNetworkService type: object P2PNetworkServiceRequest: allOf: - $ref: '#/components/schemas/P2PNetworkServiceRequestPartial' - required: - product_offering - managing_account - consuming_account - billing_account - joining_member_account - type title: P2PNetworkServiceRequest type: object P2PNetworkServiceRequestPartial: description: P2P Network Service Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string 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. example: IX:Service:23042 maxLength: 128 nullable: true type: string joining_member_account: description: 'The account of the B-side member joining the virtual circuit. ' example: '231829' type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string product_offering: type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string type: example: p2p_vc type: string required: - type title: PartialP2PNetworkServiceRequest type: object PointOfPresence: allOf: - $ref: '#/components/schemas/PointOfPresencePartial' - required: - name - facility - metro_area_network - devices - id title: PointOfPresence type: object PointOfPresencePartial: description: Point Of Presence properties: devices: items: type: string type: array facility: 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 title: PartialPointOfPresence type: object Port: allOf: - $ref: '#/components/schemas/PortPartial' - required: - state - managing_account - consuming_account - billing_account - role_assignments - id - media_type - device - pop title: Port type: object PortPartial: description: Port properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string connection: nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string device: description: 'The device the port. ' example: device:29139871 type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string id: maxLength: 80 type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string media_type: description: 'The media type of the port. Query the device''s capabilities for available types. ' example: 10GBASE-LR maxLength: 20 type: string name: default: '' description: Name of the port (set by the exchange) maxLength: 80 readOnly: true type: string 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. ' 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 title: PartialPort type: object PortRequest: allOf: - $ref: '#/components/schemas/PortRequestPartial' - required: - managing_account - consuming_account - billing_account - role_assignments - pop - media_type title: PortRequest type: object PortRequestPartial: description: Port Request properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string connection: nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string media_type: description: 'The media type of the interface. See the device''s capabilities to see what types are available. ' example: 10GBASE-LR maxLength: 20 type: string pop: description: 'Same as the `pop` of the `device`. ' example: pop:2913 type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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 title: PartialPortRequest type: object PortReservation: allOf: - $ref: '#/components/schemas/PortReservationPartial' - required: - state - id - connection title: PortReservation type: object PortReservationPartial: description: A PortReservation properties: charged_until: description: "Your obligation to pay for the service will end on this date.\n\ Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\ the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`." 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. ' 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.' 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. 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. ' 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 title: PartialPortReservation type: object PortReservationRequest: allOf: - $ref: '#/components/schemas/PortReservationRequestPartial' - required: - connection title: PortReservationRequest type: object PortReservationRequestPartial: 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. ' 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. example: IX:Service:23042 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string 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: PartialPortReservationRequest type: object PortReservationUpdate: allOf: - $ref: '#/components/schemas/PortReservationUpdatePartial' - title: PortReservationUpdate type: object PortReservationUpdatePartial: 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 contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string 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. example: IX:Service:23042 maxLength: 128 nullable: true type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string 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: PartialPortReservationUpdate type: object PortUpdate: allOf: - $ref: '#/components/schemas/PortUpdatePartial' - required: - managing_account - consuming_account - billing_account - role_assignments title: PortUpdate type: object PortUpdatePartial: description: Port Update properties: billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string connection: nullable: true type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string managing_account: description: 'The `id` of the account responsible for managing the service via the API. A manager can read and update the state of entities. ' example: '238189294' type: string purchase_order: default: '' description: 'Purchase Order ID which will be displayed on the invoice. ' example: 'Project: DC Moon' maxLength: 80 type: string role_assignments: description: 'A set of `RoleAssignment`s. See the documentation on the specific `required_contact_roles`, `nfc_required_contact_roles` or `nsc_required_contact_roles` on what `RoleAssignment`s to provide. 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 title: PartialPortUpdate type: object ProblemResponse: allOf: - $ref: '#/components/schemas/ProblemResponsePartial' - required: - type title: ProblemResponse type: object ProblemResponsePartial: description: Encodes a problem into an appropriate response body. properties: detail: description: 'A human-readable explanation specific to this occurrence of the problem.' type: string instance: description: 'A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.' type: string status: description: 'The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.' minimum: 100 type: integer title: description: 'A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4). ' example: Some fields have validation errors. type: string type: description: 'A URI reference (see RFC3986) that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be "about:blank". ' example: about:blank type: string title: PartialProblemResponse type: object ProductOffering: description: Polymorphic Product Offering discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOffering' 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 ProductOfferingPartial: description: Polymorphic Product Offering discriminator: mapping: cloud_vc: '#/components/schemas/CloudNetworkProductOfferingPartial' connection: '#/components/schemas/ConnectionProductOfferingPartial' exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial' mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOfferingPartial' p2mp_vc: '#/components/schemas/P2MPNetworkProductOfferingPartial' p2p_vc: '#/components/schemas/P2PNetworkProductOfferingPartial' propertyName: type oneOf: - $ref: '#/components/schemas/ConnectionProductOfferingPartial' - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial' - $ref: '#/components/schemas/P2PNetworkProductOfferingPartial' - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPartial' - $ref: '#/components/schemas/P2MPNetworkProductOfferingPartial' - $ref: '#/components/schemas/CloudNetworkProductOfferingPartial' title: ProductOffering (partial) RateLimitedNetworkServiceConfig: allOf: - $ref: '#/components/schemas/RateLimitedNetworkServiceConfigPartial' - title: RateLimitedNetworkServiceConfig type: object RateLimitedNetworkServiceConfigPartial: description: 'Rate limited network services include a capacity property.' properties: capacity: description: 'The capacity of the service in Mbps. If set to Null, the maximum capacity will be used, i.e. the virtual circuit is not rate-limited. An exchange may choose to constrain the available capacity range of a `ProductOffering`. That means, the service can consume up to the total bandwidth of the `Connection`. Typically the service is charged based on the capacity.' minimum: 1 nullable: true type: integer title: PartialRateLimitedNetworkServiceConfig type: object RefreshTokenRequest: allOf: - $ref: '#/components/schemas/RefreshTokenRequestPartial' - required: - refresh_token title: RefreshTokenRequest type: object RefreshTokenRequestPartial: description: RefreshTokenRequest properties: refresh_token: type: string title: PartialRefreshTokenRequest type: object Role: allOf: - $ref: '#/components/schemas/RolePartial' - required: - name - required_fields - id title: Role type: object RoleAssignment: allOf: - $ref: '#/components/schemas/RoleAssignmentPartial' - required: - role - contact - id title: RoleAssignment type: object RoleAssignmentPartial: description: A role assignment for a contact properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string id: type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string title: PartialRoleAssignment type: object RoleAssignmentRequest: allOf: - $ref: '#/components/schemas/RoleAssignmentRequestPartial' - required: - role - contact title: RoleAssignmentRequest type: object RoleAssignmentRequestPartial: description: A role assignment request properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string title: PartialRoleAssignmentRequest type: object RoleAssignmentUpdate: allOf: - $ref: '#/components/schemas/RoleAssignmentUpdatePartial' - required: - role - contact title: RoleAssignmentUpdate type: object RoleAssignmentUpdatePartial: description: A role assignemnt update properties: contact: description: 'The `id` of a contact the role is assigned to. ' example: contact:42b type: string role: description: 'The `id` of a role the contact is assigned to. ' example: role:23 type: string title: PartialRoleAssignmentUpdate type: object RolePartial: description: A role for a contact properties: id: type: string name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array title: PartialRole type: object RoleRequest: allOf: - $ref: '#/components/schemas/RoleRequestPartial' - required: - name - required_fields title: RoleRequest type: object RoleRequestPartial: description: A new role properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array title: PartialRoleRequest type: object RoleUpdate: allOf: - $ref: '#/components/schemas/RoleUpdatePartial' - required: - name - required_fields title: RoleUpdate type: object RoleUpdatePartial: description: A role update properties: name: description: 'The name of the role. ' example: noc maxLength: 80 type: string required_fields: description: 'A list of required field names. ' example: - name - email items: maxLength: 80 type: string type: array title: PartialRoleUpdate type: object RouteServerNetworkFeature: allOf: - $ref: '#/components/schemas/RouteServerNetworkFeaturePartial' - required: - id - name - required - flags - network_service - asn - fqdn - address_families - session_mode - available_bgp_session_types - type title: RouteServerNetworkFeature type: object RouteServerNetworkFeatureConfig: allOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPartial' - required: - state - managing_account - consuming_account - billing_account - role_assignments - network_feature - network_service_config - asn - session_mode - bgp_session_type - ip - id - type title: RouteServerNetworkFeatureConfig type: object RouteServerNetworkFeatureConfigPartial: description: Route Server Network Feature Config properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string 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. ' 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: - type title: PartialRouteServerNetworkFeatureConfig type: object RouteServerNetworkFeatureConfigRequest: allOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial' - required: - managing_account - consuming_account - billing_account - role_assignments - network_feature - network_service_config - asn - session_mode - bgp_session_type - ip - type title: RouteServerNetworkFeatureConfigRequest type: object RouteServerNetworkFeatureConfigRequestPartial: description: Route Server Network Feature Config Request properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string billing_account: description: An account requires billing_information to be used as a `billing_account`. type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string contract_ref: description: 'A reference to a contract. If no specific contract is used, a default MAY be chosen by the implementer. ' example: contract:31824 maxLength: 128 nullable: true type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string 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. ' 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: - type title: PartialRouteServerNetworkFeatureConfigRequest type: object RouteServerNetworkFeatureConfigUpdate: allOf: - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial' - required: - managing_account - consuming_account - asn - session_mode - bgp_session_type - ip - type title: RouteServerNetworkFeatureConfigUpdate type: object RouteServerNetworkFeatureConfigUpdatePartial: description: Route Server Network Feature Config Update properties: as_set_v4: description: 'AS-SET of the customer for IPv4 prefix filtering. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet` address family. If multiple address families are supported, it is optional if the `as_set_v6` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string as_set_v6: description: 'AS-SET of the customer for IPv6. This is used to generate filters on the router servers. Only valid referenced prefixes within the AS-SET are allowed inbound to the route server. All other routes are filtered. This field is *required* if the route server network feature only supports the `af_inet6` address family. If multiple address families are supported, it is optional if the `as_set_v4` is provided. Important: The format has to be: "AS-SET@IRR". IRR is the database where the AS-SET is registred. Typically used IRR''s are RADB, RIPE, NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC ' example: MOON-AS@RIPE maxLength: 100 nullable: true type: string asn: description: 'The ASN of the peer. ' example: 4200000023 format: int64 maximum: 4294967295 minimum: 0 type: integer bgp_session_type: description: 'The session type describes which of the both parties will open the connection. If set to passive, the customer router needs to open the connection. If its set to active, the route server will open the connection. The standard behavior on most exchanges is passive. ' enum: - active - passive example: passive type: string consuming_account: description: 'The `id` of the account consuming a service. Used to be `owning_customer`. ' example: '2381982' type: string external_ref: description: Reference field, free to use for the API user. example: IX:Service:23042 maxLength: 128 nullable: true type: string insert_ixp_asn: default: true description: 'Insert the ASN of the exchange into the AS path. This function is only used in special cases. In 99% of all cases, it should be false. ' type: boolean ip: description: 'The BGP session will be established from this IP address, 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: PartialRouteServerNetworkFeatureConfigUpdate type: object RouteServerNetworkFeaturePartial: description: Route Server Network Feature properties: address_families: description: 'When creating a route server feature config, remember to specify which address family or families to use: If the route server network feature only supports `af_inet`, then the `as_set_v4` in the network feature config is required. If only `af_inet6` is supported, then the `as_set_v6` is required. If both `af_inet` and `af_inet6` are supported, either `as_set_v4` or `as_set_v6` is required, but both can be provided in the network service config. ' example: - af_inet items: enum: - af_inet - af_inet6 type: string type: array asn: minimum: 0 type: integer available_bgp_session_types: description: 'The route server provides the following session modes. ' example: - passive items: enum: - active - passive type: string type: array flags: description: 'A list of IXP specific feature flags. This can be used to see if e.g. RPKI hard filtering is available.' items: $ref: '#/components/schemas/IXPSpecificFeatureFlag' type: array fqdn: description: 'The FQDN of the route server. ' example: rs1.moon-ix.net maxLength: 80 type: string id: type: string ip_v4: description: 'IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) notation. 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 type: string name: maxLength: 80 type: string network_service: type: string nfc_required_contact_roles: description: 'The configuration will require at least one of each of the specified roles assigned to contacts. The role assignments is associated with the network feature config through the `role_assignments` list property.' items: type: string readOnly: true type: array required: type: boolean session_mode: description: 'When creating a route server feature config, remember to specify the same session_mode as the route server. ' enum: - public - collector example: public type: string type: example: route_server type: string required: - type title: PartialRouteServerNetworkFeature type: object Stateful: allOf: - $ref: '#/components/schemas/StatefulPartial' - required: - state title: Stateful type: object StatefulPartial: description: A stateful object properties: state: enum: - requested - allocated - testing - production - production_change_pending - decommission_requested - decommissioned - archived - error - operator - scheduled - cancelled type: string status: items: $ref: '#/components/schemas/Status' type: array title: PartialStateful type: object Status: allOf: - $ref: '#/components/schemas/StatusPartial' - required: - severity - tag - message - attrs - timestamp title: Status type: object StatusPartial: description: Status Message properties: attrs: type: object message: type: string severity: description: 'We are using syslog severity levels: 0 = Emergency, 1 = Alert, 2 = Critical, 3 = Error, 4 = Warning, 5 = Notice, 6 = Informational, 7 = Debug. ' example: 2 format: int32 maximum: 7 minimum: 0 type: integer tag: type: string timestamp: format: date-time type: string title: PartialStatus type: object VLanConfigDot1Q: allOf: - $ref: '#/components/schemas/VLanConfigDot1QPartial' - required: - vlan_type title: VLanConfigDot1Q type: object VLanConfigDot1QPartial: 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: PartialVLanConfigDot1Q type: object VLanConfigPort: allOf: - $ref: '#/components/schemas/VLanConfigPortPartial' - required: - vlan_type title: VLanConfigPort type: object VLanConfigPortPartial: description: A Port vlan configuration properties: vlan_type: example: port type: string required: - vlan_type title: PartialVLanConfigPort type: object VLanConfigQinQ: allOf: - $ref: '#/components/schemas/VLanConfigQinQPartial' - required: - inner_vlan - vlan_type title: VLanConfigQinQ type: object VLanConfigQinQPartial: description: A QinQ vlan configuration properties: inner_vlan: description: 'The inner VLAN id. ' example: 200 format: int32 maximum: 4094 minimum: 1 type: integer outer_vlan: description: 'The outer VLAN id. 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: - vlan_type title: PartialVLanConfigQinQ type: object ValidationErrorProperty: allOf: - $ref: '#/components/schemas/ValidationErrorPropertyPartial' - required: - name - reason title: ValidationErrorProperty type: object ValidationErrorPropertyPartial: description: A failed validation properties: name: type: string reason: type: string title: PartialValidationErrorProperty type: object VlanConfig: description: 'The vlan configuration defines how the service is made available on the connection.' discriminator: mapping: dot1q: '#/components/schemas/VLanConfigDot1Q' port: '#/components/schemas/VLanConfigPort' qinq: '#/components/schemas/VLanConfigQinQ' propertyName: vlan_type oneOf: - $ref: '#/components/schemas/VLanConfigDot1Q' - $ref: '#/components/schemas/VLanConfigQinQ' - $ref: '#/components/schemas/VLanConfigPort' title: VlanConfig VlanConfigPartial: description: 'The vlan configuration defines how the service is made available on the connection.' discriminator: mapping: dot1q: '#/components/schemas/VLanConfigDot1QPartial' port: '#/components/schemas/VLanConfigPortPartial' qinq: '#/components/schemas/VLanConfigQinQPartial' propertyName: vlan_type oneOf: - $ref: '#/components/schemas/VLanConfigDot1QPartial' - $ref: '#/components/schemas/VLanConfigQinQPartial' - $ref: '#/components/schemas/VLanConfigPortPartial' title: VlanConfig (partial) securitySchemes: Bearer: bearerFormat: JWT scheme: bearer type: http 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. ' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: IX-API version: 2.2.1 openapi: 3.0.0 paths: /accounts: get: description: 'Retrieve a list of `Account`s. This includes all accounts the currently authorized account is managing and the current account itself.' 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/AccountUpdatePartial' description: Account Update Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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 Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/Account' description: Account 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/ConnectionUpdatePartial' 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 /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: A contact creation request responses: 201: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/ContactRequestPartial' description: A contact creation request responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/ContactRequest' description: A contact creation request responses: 200: content: application/json: schema: $ref: '#/components/schemas/Contact' description: Contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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 /facilities: get: description: Get a (filtered) list of `facilities`. operationId: facilities_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by capability_media_type in: query name: capability_media_type required: false schema: type: string - description: Filter by capability_speed in: query name: capability_speed required: false schema: type: integer - description: Filter by capability_speed__lt in: query name: capability_speed__lt required: false schema: type: integer - description: Filter by capability_speed__lte in: query name: capability_speed__lte required: false schema: type: integer - description: Filter by capability_speed__gt in: query name: capability_speed__gt required: false schema: type: integer - description: Filter by capability_speed__gte in: query name: capability_speed__gte required: false schema: type: integer - description: Filter by organisation_name in: query name: organisation_name required: false schema: type: string - description: Filter by metro_area in: query name: metro_area required: false schema: type: string - description: Filter by metro_area_network in: query name: metro_area_network required: false schema: type: string - description: Filter by address_country in: query name: address_country required: false schema: type: string - description: Filter by address_locality in: query name: address_locality required: false schema: type: string - description: Filter by postal_code in: query name: postal_code required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Facility' type: array description: 'List of: Facility' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - facilities /facilities/{id}: get: description: Retrieve a facility by id operationId: facilities_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Facility' type: array description: 'List of: Facility' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - facilities /health: get: description: Get the IX-API service health status. operationId: api_health_read responses: 200: content: application/json: schema: $ref: '#/components/schemas/HealthResponse' 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/ImplementationResponse' 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/IpAddressUpdatePartial' description: IP-Address Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips put: description: 'Update an ip address object. You can only update IP addresses within your current scope. Not all addresses you can read you can update. If the ip address was allocated for you, you might not be able to change anything but the `fqdn`.' operationId: ips_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/IpAddressUpdate' description: IP-Address Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/IpAddress' description: IP-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - ips /macs: get: description: List all mac addresses managed by the authorized customer. operationId: macs_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by managing_account in: query name: managing_account required: false schema: type: string - description: Filter by consuming_account in: query name: consuming_account required: false schema: type: string - description: Filter by external_ref in: query name: external_ref required: false schema: type: string - description: Filter by network_service_config in: query name: network_service_config required: false schema: type: string - description: Filter by address in: query name: address required: false schema: type: string - description: Filter by assigned_at in: query name: assigned_at required: false schema: type: string - description: Filter by valid_not_before in: query name: valid_not_before required: false schema: type: string - description: Filter by valid_not_after in: query name: valid_not_after required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MacAddress' type: array description: 'List of: MAC-Address' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs post: description: Register a mac address. operationId: macs_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MacAddressRequest' description: MAC-Address Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - macs /macs/{id}: delete: description: Remove a mac address. operationId: macs_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs get: description: Get a single mac address by it's id. operationId: macs_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MacAddress' description: MAC-Address 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - macs /member-joining-rules: get: description: Get a list of joining rules operationId: member_joining_rules_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by network_service in: query name: network_service required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/MemberJoiningRule' type: array description: 'List of: Polymorphic Member Joining Rule' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules post: description: Create a member joining rule operationId: member_joining_rules_create requestBody: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRuleRequest' description: Polymorphic Member Joining Rule Request responses: 201: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - properties: properties: description: 'A list of failed validations identified by the property `name` giving a `reason` why it failed.' items: $ref: '#/components/schemas/ValidationErrorProperty' type: array type: object description: ValidationError 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied tags: - member-joining-rules /member-joining-rules/{id}: delete: description: Delete a joining rule operationId: member_joining_rules_destroy parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules get: description: Get a single rule operationId: member_joining_rules_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - member-joining-rules patch: description: Partially update a joining rule operationId: member_joining_rules_partial_update parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string requestBody: content: application/merge-patch+json: schema: $ref: '#/components/schemas/MemberJoiningRuleUpdatePartial' description: Polymorphic Member Joining Rule Update responses: 200: content: application/json: schema: $ref: '#/components/schemas/MemberJoiningRule' description: Polymorphic Member Joining Rule 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/NetworkFeatureConfigUpdatePartial' description: Polymorphic Network Feauture Config Update responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkFeatureConfig' description: Polymorphic Network Feature Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/NetworkServiceConfigUpdatePartial' description: Polymorphic Network Service Config responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkServiceConfig' description: Polymorphic Network Service Config 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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-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/NetworkServiceRequestPartial' description: Polymorphic Network Service Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/NetworkServiceRequest' description: Polymorphic Network Service Request responses: 202: content: application/json: schema: $ref: '#/components/schemas/NetworkService' description: Polymorphic Network Services 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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 /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/PortReservationUpdatePartial' description: A PortReservation 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: A PortReservation 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 /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 - demarc - 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/ProductOfferingPartial' type: array description: 'List of: Polymorphic Product Offering' 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Some fields did not validate. type: enum: - https://errors.ix-api.net/v2/validation-error.html type: string type: object - 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/{assignment_id}: delete: description: 'Remove a role assignment from a contact. If the contact is still in use with a given role required, this will yield an `UnableToFulfill` error.' operationId: role_assignments_destroy parameters: - description: Get by assignment_id in: path name: assignment_id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: A role assignment for a contact 400: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 400 title: example: Unable to fulfill your request. type: enum: - https://errors.ix-api.net/v2/unable-to-fulfill.html type: string type: object - {} description: UnableToFulfill 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound 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 assignment_id in: path name: assignment_id required: true schema: description: '' title: '' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/RoleAssignment' description: A role assignment for a contact 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication 403: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 403 title: example: You do not have permission to perform this action. type: enum: - https://errors.ix-api.net/v2/permission-denied.html type: string type: object - {} description: PermissionDenied 404: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 404 title: example: Not found. type: enum: - https://errors.ix-api.net/v2/not-found.html type: string type: object - {} description: NotFound tags: - role-assignments /roles: get: description: List all roles available. operationId: roles_list parameters: - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by name in: query name: name required: false schema: type: string - description: Filter by contact in: query name: contact required: false schema: type: string responses: 200: content: application/json: schema: items: $ref: '#/components/schemas/Role' type: array description: 'List of: A role for a contact' 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication tags: - roles /roles/{id}: get: description: Get a single `Role`. operationId: roles_read parameters: - description: Get by id in: path name: id required: true schema: description: '' title: '' type: string - description: Filter by id explode: false in: query name: id required: false schema: example: id1,id2,id3 items: type: string type: array style: form - description: Filter by name in: query name: name required: false schema: type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/Role' description: A role for a contact 401: content: application/json: schema: allOf: - $ref: '#/components/schemas/ProblemResponse' - properties: status: example: 401 title: example: Authentication Credentials Invalid type: enum: - https://errors.ix-api.net/v2/authentication-error.html - https://errors.ix-api.net/v2/signature-expired.html type: string type: object - {} description: Authentication tags: - roles security: - 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_state_pending` are ready to consume services. There are `Contact`s associated with each account. Contacts can be assigned for `Role`s via `RoleAssignment`s. Depending on the IXP and the services the account wants to use, contacts with specific roles may be required. A contact with role `legal` is mandatory for an account to become operational. Only accounts with `billing_information` present can be used as a `billing_account`.' name: accounts - description: '**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: 'A `Facility` is a data centre, with a determined physical address, from which a defined set of PoPs can be accessed' name: facilities - description: 'This endpoint provides a health status response implementing https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html The schema describes the toplevel fields - however the implementation of health checks is up to the IX-API implementor.' name: health - description: 'This endpoint provides information about the IX-API implementation of the exchange. You can find the implemented schema version and supported types and operations here.' name: implementation - description: 'An `IP` is a IPv4 or 6 addresses, with a given validity period. Some services require IP addresses to work. When you are joining an `exchange_lan` network service for example, addresses on the peering lan will be assigned to you.' name: ips - description: 'A `MAC` is a MAC addresses with a given validity period. Some services require MAC addresses to work. Please note that only *unicast* MAC addresses are allowed. You are not alllowed to use multicast or broadcast addresses. The address itself can not be updated after creation. However: It can be expired by changing the `valid_not_before` and `valid_not_after` properties.' name: macs - description: 'A `MemberJoiningRule` defines a rule to allow or deny access for an `Account` to a access a `NetworkService`. Furthermore, some `NetworkService`s may only be visible if the querying account is listed in an allow rule.' name: member-joining-rules - description: 'Services are provided directly on or can be consumed from inside a `MetroAreaNetwork`. Accounts can indicate their presence in a `MetroAreaNetwork` to others by adding a list of ids.' name: metro-area-networks - description: 'A MetroArea exists if a `MetroAreaNetwork` or `Facility` is present in it.' name: metro-areas - description: 'A `NetworkFeatureConfig` is a configuration for using a `NetworkFeature`. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-feature-configs - description: 'A `NetworkFeature` represents additional funcationality of a single `NetworkService`. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-features - description: 'A `NetworkServiceConfig` is a customer''s configuration for usage of a `NetworkService`, e.g. the configuration of a (subset of a) connection for that customer''s traffic The `type` of the config determines the service you are configuring. You can find the services available to you on the platform, by querying the `NetworkService`s resource. For certain `NetworkFeature`s, which are marked as required, one `NetworkFeatureConfig needs to be created in order to move the `NetworkServiceConfig` into `production`.' name: network-service-configs - description: 'A `NetworkService` represents an instance of a `ProductOffering`. The exchange lan is a special case in which the `NetworkService` is managed by the exchange. All other `NetworkService`s are created and managed by an `Account`.' 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