{"openapi": "3.0.0", "info": {"version": "2.6.0", "title": "IX-API", "description": "\nThis API allows to configure/change/delete Internet Exchange services.\n\n# Filters\nWhen querying collections, the provided query parameters\nare validated. Unknown query parameters are ignored.\nProviding invalid filter values should yield a validation error.\n\nWhen multiple filters are provided, the result must match all filters.\n\n# Pagination\n\nPagination is an *optional* feature of the IX-API and can be used on\nevery collection endpoint. Use the\n`api_implementation_read`\noperation to discover if it is available.\n\nPagination needs to be initiated by the client by providing the\n`page_limit` query parameter.\n\n### Query Parameters\n\nPagination is controlled using the following query parameters:\n\n| Parameter | Description |\n| ------ | ------ |\n| `page_offset` | The offset of the first item in the collection. **Default:** `0` |\n| `page_limit` | The maximum number of items in the response |\n| `page_token` | **OPTIONAL**: The token from the initial response.
If invalid a `ValidationError` with HTTP status `400` will be returned |\n\n\n### Paginated Response\n\nIf the collection is paginated, the HTTP status code of the response\nwill be `206 Partial Content` and pagination metadata is provided\nin the response headers:\n\n| Header | Description |\n| ------ | ------ |\n| `X-Pagination-Limit` | Maximum number of items returned |\n| `X-Pagination-Offset` | Current offset of the first item in the collection |\n| `X-Pagination-Items` | Total number of items in the collection |\n| `X-Pagination-Pages` | Total number of pages |\n| `X-Pagination-Page` | Current page |\n| `X-Pagination-Token` | An identifier that changes when the collection changes between requests |\n| `X-Pagination-Next` | Path to the next page of the collection |\n\nThe `X-Pagination-Token` can be used to check if the result set has changed\nbetween requests. If the token has changed, the client may re-query\nthe collection from the beginning, to ensure that no items are missed.\nIf you are tracking changes to the collection, the token can be implemented as\na combination of the time of most recent insert or update with the total number\nof items.\n\nThe `X-Pagination-Next` header contains the URL path to the next page of the\ncollection, including all other query parameters:\n`/collection?filter=foo¶m=bar&page_offset=100&page_limit=50&page_token=MTIzMTM5MDEyMDg0NQ==`.\nThe path is relative the API base path (e.g. `/api/v2`). This can be used\nas a cursor to navigate the collection.\n\n# State\nA lot of resources are stateful, indicated by the presence of\na `state` property, to support the\ninherently asynchronous nature of provisioning, deployment and\non-boarding processes.\n\nThe following table describes the meaning of each state:\n\n| State | Meaning |\n| ------ | ------ |\n| requested | Resource has been requested by the customer but not yet fully reserved (sub-resources required) |\n| allocated | All resources required for service are reserved |\n| testing | The resource is provisioned and is currently being tested |\n| production | The resource is active and can be used by the customer |\n| production_change_pending | The resource is active but the customer has requested a change that is awaiting completion |\n| decommission_requested | The resource is active but the customer has requested disconnection that is awaiting completion |\n| decommissioned | The resource has been de-provisioned and billing is terminated or scheduled for termination |\n| archived | The resource was \"deleted/purged\" and is not listed unless explicitly requested in the filter (i.e. `?state=archived`). |\n| error | The resource has experienced error during provisioning or after is has been activated |\n| cancelled | The request for a service was cancelled before provisioning was completed |\n| operator | Human intervention is needed |\n| scheduled | The service has been scheduled for provisioning |\n\nPlease note, that not all implementers _HAVE_ to implement\nall the listed states.\n\n*Sidenote:* If the deleted operation is applied to an object in\nstate `decommissioned` the object will move to state archived.\n\n# Sensitive Properties\n\nSome properties contain sensitive information and should be redacted when\nthe resource is made available users outside the authorized scope.\n\nThis is for example the case when an `Account` is flagged as `discoverable`,\nit becomes available to other API users. In this case only: `id`, `name`\nand `metro_area_network_presence` should be exposed.\n\nIf a property is `required` and needs to be redacted, a zero value\nshould be used. For strings this would be an empty string `\"\"`,\nfor numeric values `0` and booleans `false`.\n\nShared resources with sensitive properties: `Account`, `NetworkService`\n", "contact": {"url": "https://ix-api.net"}, "license": {"name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html"}}, "paths": {"/auth/token": {"post": {"operationId": "auth_token_create", "description": "Authenticate an API user identified by `api_key` and\n`api_secret`.", "tags": ["auth"], "responses": {"201": {"description": "**AuthToken**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthToken"}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "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"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "security": [], "requestBody": {"description": "**AuthTokenRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthTokenRequest"}}}}}}, "/auth/refresh": {"post": {"operationId": "auth_token_refresh", "description": "Reauthenticate the API user, issue a new `access_token`\nand `refresh_token` pair by providing the `refresh_token`\nin the request body.", "tags": ["auth"], "responses": {"201": {"description": "**AuthToken**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthToken"}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "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"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "security": [], "requestBody": {"description": "**RefreshTokenRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshTokenRequest"}}}}}}, "/facilities": {"get": {"operationId": "facilities_list", "description": "Get a (filtered) list of `facilities`.", "tags": ["facilities"], "responses": {"200": {"description": "List of: **Facility**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Facility"}}}}}, "206": {"description": "Paginated List of: **Facility**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Facility"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "capability_speed", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed"}, {"name": "capability_speed_lt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lt"}, {"name": "capability_speed_lte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lte"}, {"name": "capability_speed_gt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gt"}, {"name": "capability_speed_gte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gte"}, {"name": "capability_media_type", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by capability_media_type"}, {"name": "organisation_name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by organisation_name"}, {"name": "metro_area", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by metro_area"}, {"name": "metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by metro_area_network"}, {"name": "address_country", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by address_country"}, {"name": "address_locality", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by address_locality"}, {"name": "postal_code", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by postal_code"}]}}, "/facilities/{id}": {"get": {"operationId": "facilities_read", "description": "Retrieve a facility by id", "tags": ["facilities"], "responses": {"200": {"description": "**Facility**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Facility"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/devices": {"get": {"operationId": "devices_list", "description": "List available devices", "tags": ["devices"], "responses": {"200": {"description": "List of: **Device**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Device"}}}}}, "206": {"description": "Paginated List of: **Device**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Device"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "capability_speed", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed"}, {"name": "capability_speed_lt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lt"}, {"name": "capability_speed_lte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lte"}, {"name": "capability_speed_gt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gt"}, {"name": "capability_speed_gte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gte"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "capability_media_type", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by capability_media_type"}, {"name": "facility", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by facility"}, {"name": "pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by pop"}, {"name": "metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by metro_area_network"}]}}, "/devices/{id}": {"get": {"operationId": "devices_read", "description": "Get a specific device identified by id", "tags": ["devices"], "responses": {"200": {"description": "**Device**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Device"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/pops": {"get": {"operationId": "pops_list", "description": "List all PoPs", "tags": ["pops"], "responses": {"200": {"description": "List of: **Point Of Presence**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PointOfPresence"}}}}}, "206": {"description": "Paginated List of: **Point Of Presence**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PointOfPresence"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "facility", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by facility"}, {"name": "metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by metro_area_network"}, {"name": "capability_media_type", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by capability_media_type"}, {"name": "capability_speed", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed"}, {"name": "capability_speed_lt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lt"}, {"name": "capability_speed_lte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_lte"}, {"name": "capability_speed_gt", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gt"}, {"name": "capability_speed_gte", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capability_speed_gte"}]}}, "/pops/{id}": {"get": {"operationId": "pops_read", "description": "Get a single point of presence", "tags": ["pops"], "responses": {"200": {"description": "**Point Of Presence**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PointOfPresence"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/metro-area-networks": {"get": {"operationId": "metro_area_networks_list", "description": "List all MetroAreaNetworks", "tags": ["metro-area-networks"], "responses": {"200": {"description": "List of: **MetroAreaNetwork**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MetroAreaNetwork"}}}}}, "206": {"description": "Paginated List of: **MetroAreaNetwork**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MetroAreaNetwork"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "metro_area", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by metro_area"}, {"name": "service_provider", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_provider"}]}}, "/metro-area-networks/{id}": {"get": {"operationId": "metro_area_networks_read", "description": "Retrieve a MetroAreaNetwork", "tags": ["metro-area-networks"], "responses": {"200": {"description": "**MetroAreaNetwork**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetroAreaNetwork"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/metro-areas": {"get": {"operationId": "metro_areas_list", "description": "List all MetroAreas", "tags": ["metro-areas"], "responses": {"200": {"description": "List of: **MetroArea**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MetroArea"}}}}}, "206": {"description": "Paginated List of: **MetroArea**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MetroArea"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}]}}, "/metro-areas/{id}": {"get": {"operationId": "metro_areas_read", "description": "Get a single MetroArea", "tags": ["metro-areas"], "responses": {"200": {"description": "**MetroArea**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetroArea"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/product-offerings": {"get": {"operationId": "product_offerings_list", "description": "List all (filtered) products-offerings available on the platform", "tags": ["product-offerings"], "responses": {"200": {"description": "List of: **Polymorphic Product Offering**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ProductOfferingPatch"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Product Offering**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ProductOfferingPatch"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "type", "schema": {"type": "string", "enum": ["connection", "exchange_lan", "p2p_vc", "mp2mp_vc", "p2mp_vc", "cloud_vc", "routing_function"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "resource_type", "schema": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"]}, "required": false, "in": "query", "description": "Filter by resource_type"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "handover_metro_area", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by handover_metro_area"}, {"name": "handover_metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by handover_metro_area_network"}, {"name": "handover_pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by handover_pop"}, {"name": "service_metro_area", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_metro_area"}, {"name": "service_metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_metro_area_network"}, {"name": "service_provider", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_provider"}, {"name": "downgrade_allowed", "schema": {"type": "string", "enum": ["true", "false"]}, "required": false, "in": "query", "description": "Filter by downgrade_allowed"}, {"name": "upgrade_allowed", "schema": {"type": "string", "enum": ["true", "false"]}, "required": false, "in": "query", "description": "Filter by upgrade_allowed"}, {"name": "bandwidth", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Find product offerings where bandwidth is\nwithin the range of `bandwidth_min` and `bandwidth_max`."}, {"name": "physical_port_speed", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by physical_port_speed"}, {"name": "service_provider_region", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_provider_region"}, {"name": "service_provider_pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by service_provider_pop"}, {"name": "delivery_method", "schema": {"type": "string", "enum": ["dedicated", "shared"]}, "required": false, "in": "query", "description": "Filter by delivery_method"}, {"name": "cloud_key", "schema": {"type": "string"}, "required": false, "in": "query", "description": "For product offerings of type `cloud_vc`, if the\n`service_provider_workflow` is `provider_first` the\n`cloud_key` will be used for filtering the relevant\nofferings."}, {"name": "contract_initial_period", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contract_initial_period"}, {"name": "contract_initial_notice_period", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contract_initial_notice_period"}, {"name": "contract_renewal_period", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contract_renewal_period"}, {"name": "contract_renewal_notice_period", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contract_renewal_notice_period"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Returned objects only have properties which are\npresent in the list of fields.\nThe required `type` property is *implicitly* included.\nThe results are *deduplicated*.\n", "example": "handover_metro_area,service_provider"}]}}, "/product-offerings/{id}": {"get": {"operationId": "product_offerings_read", "description": "Get a single products-offering by id.", "tags": ["product-offerings"], "responses": {"200": {"description": "**Polymorphic Product Offering**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProductOffering"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/availability-zones": {"get": {"operationId": "availability_zones_list", "description": "List all availability zones available on the platform.", "tags": ["availability-zones"], "responses": {"200": {"description": "List of: **AvailabilityZone**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/AvailabilityZone"}}}}}, "206": {"description": "Paginated List of: **AvailabilityZone**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/AvailabilityZone"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}]}}, "/availability-zones/{id}": {"get": {"operationId": "availability_zones_read", "description": "Get a single availability zone by id.", "tags": ["availability-zones"], "responses": {"200": {"description": "**AvailabilityZone**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AvailabilityZone"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/ports": {"get": {"operationId": "ports_list", "description": "List all ports.", "tags": ["ports"], "responses": {"200": {"description": "List of: **Port**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Port"}}}}}, "206": {"description": "Paginated List of: **Port**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Port"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "media_type", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by media_type"}, {"name": "pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by pop"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "device", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by device"}, {"name": "speed", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by speed"}, {"name": "connection", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by connection"}]}}, "/ports/{id}": {"get": {"operationId": "ports_read", "description": "Retrieve a port.", "tags": ["ports"], "responses": {"200": {"description": "**Port**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Port"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/ports/{id}/statistics": {"get": {"operationId": "ports_statistics_read", "description": "Read a `Port`s aggregated statistics.\n\n\nA `start` and `end` query parameter can be used to\nretrieve the aggregated traffic for a given window.\nIn this case the key of the returned statistics is `custom`.\n\nWith a given `start` and `end` window, the resolution for\nthe aggregated data is chosen by the implementation.\n\nYou need to check the `accuracy` attribute of the aggregate,\nto see if the data can be used for the desired\nusecase. The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a sliding window\nis assumed and key value pairs of resolutions and aggregated\nstatistics are returned.", "tags": ["ports"], "responses": {"200": {"description": "**Port Statistics**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortStatistics"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Beginning of the traffic aggregation."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the traffic aggregation.\nDefault is `now`."}]}}, "/ports/{id}/statistics/{aggregate}/timeseries": {"get": {"operationId": "ports_statistics_timeseries_read", "description": "Read a `Port`s aggregated timeseries.\nThe resolution is defined by the aggregate.", "tags": ["ports"], "responses": {"200": {"description": "**Aggregated Statistics Timeseries**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AggregateTimeseries"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "aggregate", "in": "path", "required": true, "description": "Get by aggregate", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Start of the timeseries."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the timeseries.\n\nDefault: `now`"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Select fields from the aggregates to export as a timeseries.\n\nDefault: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`"}]}}, "/port-reservations": {"get": {"operationId": "port_reservations_list", "description": "List all port reservations.", "tags": ["port-reservations"], "responses": {"200": {"description": "List of: **A PortReservation**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PortReservation"}}}}}, "206": {"description": "Paginated List of: **A PortReservation**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PortReservation"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "connection", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by connection"}, {"name": "port", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by port"}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}]}, "post": {"operationId": "port_reservations_create", "description": "Create a new `PortReservation`.\n\nTwo workflows for allocating ports is supported and\ndependent on the `cross_connect_initiator` property\nof the corresponding `product-offering`:\n\nIndividual LOAs can be uploaded and downloaded for\neach PortAllocation using the endpoint\n`/port-reservations/{id}/loa`.\n\nPlease refer to the internet exchange's api usage\nguide for implementation specific details.", "tags": ["port-reservations"], "responses": {"201": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservation"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservationRequest"}}}}}}, "/port-reservations/{id}": {"get": {"operationId": "port_reservations_read", "description": "Retrieve a `PortReservation`.", "tags": ["port-reservations"], "responses": {"200": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservation"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "port_reservations_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a port reservation.", "tags": ["port-reservations"], "responses": {"202": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservation"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**PortReservation Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservationUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "port_reservations_partial_update", "description": "Update a port reservation.", "tags": ["port-reservations"], "responses": {"202": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservation"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**PortReservation Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservationPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "port_reservations_destroy", "description": "Request decommissioning the port-reservation.\nThe associated `port` will be deallocated and\nremoved from the `connection`.", "tags": ["port-reservations"], "responses": {"202": {"description": "**A PortReservation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PortReservation"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "CancellationPolicyError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/cancellation-policy-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html", "https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Requested cancellation date outside of notice period."}, "status": {"example": 400}}}, {"type": "object", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service.\n\nSee the service `cancellation-policy` for details."}, "charged_until": {"type": "string", "format": "date", "description": "The date until the service is payed for.\nTypically `\u2265 decommission_at`."}, "properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Service Cancellation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/port-reservations/{id}/cancellation-policy": {"get": {"operationId": "port_reservation_cancellation_policy_read", "description": "The cancellation-policy can be queried to answer\nthe questions:\n\nIf I cancel my subscription, *when will it be technically\ndecommissioned*?\nIf I cancel my subscription, *until what date will I be charged*?\n\nWhen the query parameter `decommision_at` is not provided\nit will provide the first possible cancellation date\nand charge period if cancelled at above date.\n\nThe granularity of the date field is a day, the start and end\nof which are to be interpreted by the IXP (some may use UTC,\nsome may use their local time zone).", "tags": ["port-reservations"], "responses": {"200": {"description": "**Cancellation Policy**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationPolicy"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "decommission_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "By providing a date in the format `YYYY-MM-DD` you can\nquery the policy what would happen if you request a\ndecommissioning on this date."}]}}, "/port-reservations/{id}/loa": {"get": {"operationId": "port_reservations_loa_download", "description": "Download the *Letter Of Authorization* associated\nwith the port-reservation.\n\nIn case of a *subscriber initiated cross-connect*,\nit will be provided by the exchange.", "tags": ["port-reservations"], "responses": {"200": {"description": "A Letter Of Authorization", "content": {"application/pdf": {"schema": {"type": "string", "format": "binary"}}, "application/octet-stream": {"schema": {"type": "string", "format": "binary"}}, "text/plain": {"schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "post": {"operationId": "port_reservations_loa_upload", "description": "Upload a *Letter Of Authorization* for this\n`PortReservation`.", "tags": ["port-reservations"], "responses": {"200": {"description": "The upload was successful"}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "A Letter Of Authorization", "content": {"application/pdf": {"schema": {"type": "string", "format": "binary"}}, "application/octet-stream": {"schema": {"type": "string", "format": "binary"}}, "text/plain": {"schema": {"type": "string"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/connections": {"get": {"operationId": "connections_list", "description": "List all `connection`s.", "tags": ["connections"], "responses": {"200": {"description": "List of: **Connection**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Connection"}}}}}, "206": {"description": "Paginated List of: **Connection**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Connection"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "mode", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by mode"}, {"name": "mode__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by mode__is_not"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "metro_area", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter connections by ID of the metro_area"}, {"name": "metro_area_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter connections by ID of the metro_area_network"}, {"name": "pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by pop"}, {"name": "facility", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by facility"}, {"name": "role_assignments", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by role_assignments", "style": "form", "explode": false}, {"name": "contacts", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by contacts", "style": "form", "explode": false}, {"name": "supported_network_service", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter connections that can be used in a network service\nconfig for the service identified by ID"}]}, "post": {"operationId": "connections_create", "description": "Create a new `connection` and request ports\nallocation.\n\nTwo workflows for allocating ports is supported and\ndependent on the `cross_connect_initiator` property\nof the corresponding `product-offering`:\n\nWhen the initiator is the `subscriber`, a Letter Of\nAuthorization (LOA) can\nbe downloaded from the `/connection//loa`\nresource. In case the `exchange` is the initiator,\nthe LOA can be uploaded to this resource.\n\nCreating a connection will also create\nPortReservations. See the `port_quantity` and\n`subscriber_side_demarcs` attributes for details.\n\nPlease refer to the internet exchange's api usage\nguide for implementation specific details.", "tags": ["connections"], "responses": {"201": {"description": "**Connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Connection"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Request a new connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionRequest"}}}}}}, "/connections/{id}": {"get": {"operationId": "connections_read", "description": "Read a `connection`.", "tags": ["connections"], "responses": {"200": {"description": "**Connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Connection"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "connections_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a connection.", "tags": ["connections"], "responses": {"202": {"description": "**Connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Connection"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Connection Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "connections_partial_update", "description": "Update a connection.", "tags": ["connections"], "responses": {"202": {"description": "**Connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Connection"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Connection Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "connections_destroy", "description": "Request decommissioning the connection.\n\nThe cancellation policy of the connection applies\nhere and is independent from the\npolicy of the network-service and network-service-config\nusing the connection.\n\nThe connection will assume the state\n`decommission_requested`.\n\nAssociated `port-reservation` will be also\nmarked for decommissining and ports will\nbe deallocated.\n\nThe decommissioning request will *not* cascade\nto network services and configs.", "tags": ["connections"], "responses": {"202": {"description": "**Connection**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Connection"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "CancellationPolicyError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/cancellation-policy-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html", "https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Requested cancellation date outside of notice period."}, "status": {"example": 400}}}, {"type": "object", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service.\n\nSee the service `cancellation-policy` for details."}, "charged_until": {"type": "string", "format": "date", "description": "The date until the service is payed for.\nTypically `\u2265 decommission_at`."}, "properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Service Cancellation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/connections/{id}/statistics": {"get": {"operationId": "connections_statistics_read", "description": "Read a `Connection`s aggregated statistics.\n\n\nA `start` and `end` query parameter can be used to\nretrieve the aggregated traffic for a given window.\nIn this case the key of the returned statistics is `custom`.\n\nWith a given `start` and `end` window, the resolution for\nthe aggregated data is chosen by the implementation.\n\nYou need to check the `accuracy` attribute of the aggregate,\nto see if the data can be used for the desired\nusecase. The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a sliding window\nis assumed and key value pairs of resolutions and aggregated\nstatistics are returned.", "tags": ["connections"], "responses": {"200": {"description": "**Mapping of Aggregated Statistics**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Aggregate"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Beginning of the traffic aggregation."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the traffic aggregation.\nDefault is `now`."}]}}, "/connections/{id}/statistics/{aggregate}/timeseries": {"get": {"operationId": "connections_statistics_timeseries_read", "description": "Read a `Connection`s aggregated timeseries.\nThe resolution is defined by the aggregate.", "tags": ["connections"], "responses": {"200": {"description": "**Aggregated Statistics Timeseries**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AggregateTimeseries"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "aggregate", "in": "path", "required": true, "description": "Get by aggregate", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Start of the timeseries."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the timeseries.\n\nDefault: `now`"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Select fields from the aggregates to export as a timeseries.\n\nDefault: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`"}]}}, "/connections/{id}/loa": {"get": {"operationId": "connections_loa_download", "description": "Download the *Letter Of Authorization* associated with the `connection`.\nIn case of a *subscriber initiated cross-connect*,\nit will be provided by the exchange.", "tags": ["connections"], "responses": {"200": {"description": "A Letter Of Authorization", "content": {"application/pdf": {"schema": {"type": "string", "format": "binary"}}, "application/octet-stream": {"schema": {"type": "string", "format": "binary"}}, "text/plain": {"schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "post": {"operationId": "connections_loa_upload", "description": "Upload a *Letter Of Authorization* for this\n`connection`.\n\nThe LOA is valid for the entire connection and must\ninclude all ports.", "tags": ["connections"], "responses": {"200": {"description": "The upload was successful"}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "A Letter Of Authorization", "content": {"application/pdf": {"schema": {"type": "string", "format": "binary"}}, "application/octet-stream": {"schema": {"type": "string", "format": "binary"}}, "text/plain": {"schema": {"type": "string"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/connections/{id}/cancellation-policy": {"get": {"operationId": "connections_cancellation_policy_read", "description": "The cancellation-policy can be queried to answer\nthe questions:\n\nIf I cancel my subscription, *when will it be technically\ndecommissioned*?\nIf I cancel my subscription, *until what date will I be charged*?\n\nWhen the query parameter `decommision_at` is not provided\nit will provide the first possible cancellation date\nand charge period if cancelled at above date.\n\nThe granularity of the date field is a day, the start and end\nof which are to be interpreted by the IXP (some may use UTC,\nsome may use their local time zone).", "tags": ["connections"], "responses": {"200": {"description": "**Cancellation Policy**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationPolicy"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "decommission_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "By providing a date in the format `YYYY-MM-DD` you can\nquery the policy what would happen if you request a\ndecommissioning on this date."}]}}, "/network-service-configs": {"get": {"operationId": "network_service_configs_list", "description": "Get all `network-service-config`s.", "tags": ["network-service-configs"], "responses": {"200": {"description": "List of: **Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "type", "schema": {"type": "string", "enum": ["exchange_lan", "p2p_vc", "p2mp_vc", "mp2mp_vc", "cloud_vc"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "inner_vlan", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by inner_vlan"}, {"name": "outer_vlan", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by outer_vlan"}, {"name": "capacity", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by capacity"}, {"name": "network_service", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service"}, {"name": "connection", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by connection"}, {"name": "product_offering", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by product_offering"}, {"name": "role_assignments", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by role_assignments", "style": "form", "explode": false}, {"name": "contacts", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by contacts", "style": "form", "explode": false}]}, "post": {"operationId": "network_service_configs_create", "description": "Create a `network-service-config`.", "tags": ["network-service-configs"], "responses": {"201": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorhic Network Service Config Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfigRequest"}}}}}}, "/network-service-configs/{id}": {"get": {"operationId": "network_service_configs_read", "description": "Get a `network-service-config`", "tags": ["network-service-configs"], "responses": {"200": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "network_service_configs_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate an exisiting `network-service-config`", "tags": ["network-service-configs"], "responses": {"202": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "network_service_configs_partial_update", "description": "Update an exisiting `network-service-config`.", "tags": ["network-service-configs"], "responses": {"202": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Service Config**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfigPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "network_service_configs_destroy", "description": "Request decommissioning the network service configuration.\n\nThe network service config will assume the state\n`decommission_requested`.\nThis will cascade to related resources like\n`network-feature-configs`.", "tags": ["network-service-configs"], "responses": {"202": {"description": "**Polymorphic Network Service Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "CancellationPolicyError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/cancellation-policy-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html", "https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Requested cancellation date outside of notice period."}, "status": {"example": 400}}}, {"type": "object", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service.\n\nSee the service `cancellation-policy` for details."}, "charged_until": {"type": "string", "format": "date", "description": "The date until the service is payed for.\nTypically `\u2265 decommission_at`."}, "properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Service Cancellation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/network-service-configs/{id}/statistics": {"get": {"operationId": "network_service_configs_statistics_read", "description": "Read the aggregated statistics of a `NetworkServiceConfig`.\n\nA `start` and `end` query parameter can be used to\nretrieve the aggregated traffic for a given window.\nIn this case the key of the returned statistics is `custom`.\n\nWith a given `start` and `end` window, the resolution for\nthe aggregated data is chosen by the implementation.\n\nYou need to check the `accuracy` attribute of the aggregate,\nto see if the data can be used for the desired\nusecase. The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a sliding window\nis assumed and key value pairs of resolutions and aggregated\nstatistics are returned.", "tags": ["network-service-configs"], "responses": {"200": {"description": "**Statistics for NetworkServiceConfig**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfigAggregate"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Beginning of the traffic aggregation."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the traffic aggregation.\nDefault is `now`."}]}}, "/network-service-configs/{id}/statistics/{aggregate}/timeseries": {"get": {"operationId": "network_service_configs_statistics_timeseries_read", "description": "Read a `NetworkServiceConfig`s aggregated timeseries.\nThe resolution is defined by the aggregate.", "tags": ["network-service-configs"], "responses": {"200": {"description": "**Aggregated Statistics Timeseries**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AggregateTimeseries"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "aggregate", "in": "path", "required": true, "description": "Get by aggregate", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Start of the timeseries."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the timeseries.\n\nDefault: `now`"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Select fields from the aggregates to export as a timeseries.\n\nDefault: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`"}]}}, "/network-service-configs/{id}/peer-statistics": {"get": {"operationId": "network_service_configs_peer_statistics_read", "description": "Read the aggregated peer to peer statistics in relation\n to the peer represented by the `NetworkServiceConfig`.\n\nThis operation will return a list of aggregated statistics.\n\nA `start` and `end` query parameter can be used to\nretrieve the aggregated traffic for a given window.\nIn this case the key of the returned statistics is `custom`.\n\nWith a given `start` and `end` window, the resolution for\nthe aggregated data is chosen by the implementation.\n\nYou need to check the `accuracy` attribute of the aggregate,\nto see if the data can be used for the desired\nusecase. The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a sliding window\nis assumed and key value pairs of resolutions and aggregated\nstatistics are returned.", "tags": ["network-service-configs"], "responses": {"200": {"description": "List of: **PeerStatistics**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PeerAggregate"}}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Beginning of the traffic aggregation."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the traffic aggregation.\nDefault is `now`."}, {"name": "asn", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by asn"}, {"name": "mac_address", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by mac_address"}, {"name": "ip_address", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by ip_address"}, {"name": "ip_version", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by ip_version"}]}}, "/network-service-configs/{id}/peer-statistics/{aggregate}/timeseries": {"get": {"operationId": "network_service_configs_peer_statistics_timeseries_read", "description": "Read peer to peer aggregated timeseries.\nThe resolution is defined by the aggregate.\n\nThis operation will return a list of timeseries for each peer.", "tags": ["network-service-configs"], "responses": {"200": {"description": "List of: **PeerStatistics Timeseries**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PeerTimeseries"}}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "aggregate", "in": "path", "required": true, "description": "Get by aggregate", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Start of the timeseries."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the timeseries.\n\nDefault: `now`"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Select fields from the aggregates to export as a timeseries.\n\nDefault: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`"}, {"name": "asn", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by asn"}, {"name": "mac_address", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by mac_address"}, {"name": "ip_address", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by ip_address"}, {"name": "ip_version", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by ip_version"}]}}, "/network-service-configs/{id}/cancellation-policy": {"get": {"operationId": "network_service_config_cancellation_policy_read", "description": "The cancellation-policy can be queried to answer\nthe questions:\n\nIf I cancel my subscription, *when will it be technically\ndecommissioned*?\nIf I cancel my subscription, *until what date will I be charged*?\n\nWhen the query parameter `decommision_at` is not provided\nit will provide the first possible cancellation date\nand charge period if cancelled at above date.\n\nThe granularity of the date field is a day, the start and end\nof which are to be interpreted by the IXP (some may use UTC,\nsome may use their local time zone).", "tags": ["network-service-configs"], "responses": {"200": {"description": "**Cancellation Policy**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationPolicy"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "decommission_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "By providing a date in the format `YYYY-MM-DD` you can\nquery the policy what would happen if you request a\ndecommissioning on this date."}]}}, "/network-feature-configs": {"get": {"operationId": "network_feature_configs_list", "description": "Get all network feature configs.", "tags": ["network-feature-configs"], "responses": {"200": {"description": "List of: **Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "type", "schema": {"type": "string", "enum": ["route_server"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "service_config", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the id of the NetworkServiceConfig the\nfeature configuration is related to.\n\n**DEPRECATION NOTICE**: Use `network_service_config` instead."}, {"name": "network_service_config", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the id of the NetworkServiceConfig the\nfeature configuration is related to."}, {"name": "network_feature", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_feature"}, {"name": "role_assignments", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by role_assignments", "style": "form", "explode": false}, {"name": "contacts", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by contacts", "style": "form", "explode": false}]}, "post": {"operationId": "network_feature_configs_create", "description": "Create a configuration for a `NetworkFeature`\ndefined in the `NetworkFeature`s collection.", "tags": ["network-feature-configs"], "responses": {"201": {"description": "**Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Feature Config Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfigRequest"}}}}}}, "/network-feature-configs/{id}": {"get": {"operationId": "network_feature_configs_read", "description": "Get a single network feature config.", "tags": ["network-feature-configs"], "responses": {"200": {"description": "**Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "network_feature_configs_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a network feature configuration", "tags": ["network-feature-configs"], "responses": {"202": {"description": "**Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Feauture Config Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfigUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "network_feature_configs_partial_update", "description": "Update a network feature configuration.", "tags": ["network-feature-configs"], "responses": {"202": {"description": "**Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Feauture Config Patch**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfigPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "network_feature_configs_destroy", "description": "Remove a network feature config.\n\nThe network feature config will be marked as\n`decommission_requested`.\nDecommissioning a network feature config will not\ncascade to related services or service configs.", "tags": ["network-feature-configs"], "responses": {"202": {"description": "**Polymorphic Network Feature Config**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfig"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/account": {"get": {"operationId": "account_read", "description": "Get the currently authenticated `Account`.", "tags": ["accounts"], "responses": {"200": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}}}, "/accounts": {"get": {"operationId": "accounts_list", "description": "Retrieve a list of `Account`s.\n\nThis includes all accounts the currently authorized account\nis managing and the current account itself.\n\nAlso `discoverable` accounts will be included, however\nsensitive properties, like `address` or `external_ref` will\neither not be present or redacted.", "tags": ["accounts"], "responses": {"200": {"description": "List of: **Account**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Account"}}}}}, "206": {"description": "Paginated List of: **Account**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Account"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by managing_account"}, {"name": "billable", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by billable"}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}]}, "post": {"operationId": "accounts_create", "description": "Create a new account.", "tags": ["accounts"], "responses": {"201": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Account Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountRequest"}}}}}}, "/accounts/{id}": {"get": {"operationId": "accounts_read", "description": "Get a single account.", "tags": ["accounts"], "responses": {"200": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "accounts_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate the entire account.", "tags": ["accounts"], "responses": {"202": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Account Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "accounts_partial_update", "description": "Update an account.", "tags": ["accounts"], "responses": {"202": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Account Update**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/AccountPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "accounts_destroy", "description": "Accounts can be deleted, when all services and configs\nare decommissioned or the account is not longer referenced\ne.g. as a `managing_account` or `billing_account`.\n\nDeleting an account will cascade to `contacts` and\n`role-assignments`.\n\nThe request will immediately fail, if the above preconditions\nare not met.", "tags": ["accounts"], "responses": {"200": {"description": "**Account**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/roles": {"get": {"operationId": "roles_list", "description": "List all roles available.", "tags": ["roles"], "responses": {"200": {"description": "List of: **Role for a Contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Role"}}}}}, "206": {"description": "Paginated List of: **Role for a Contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Role"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}, {"name": "contact", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contact"}]}}, "/roles/{id}": {"get": {"operationId": "roles_read", "description": "Get a single `Role`.", "tags": ["roles"], "responses": {"200": {"description": "**Role for a Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/contacts": {"get": {"operationId": "contacts_list", "description": "List available contacts managed by the authorized account.", "tags": ["contacts"], "responses": {"200": {"description": "List of: **Contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Contact"}}}}}, "206": {"description": "Paginated List of: **Contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Contact"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}]}, "post": {"operationId": "contacts_create", "description": "Create a new contact.", "tags": ["contacts"], "responses": {"201": {"description": "**Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Contact"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Contact Create Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ContactRequest"}}}}}}, "/contacts/{id}": {"get": {"operationId": "contacts_read", "description": "Get a contact by it's id", "tags": ["contacts"], "responses": {"200": {"description": "**Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Contact"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "contacts_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a contact.", "tags": ["contacts"], "responses": {"200": {"description": "**Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Contact"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Contact Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ContactUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "contacts_partial_update", "description": "Update a contact.", "tags": ["contacts"], "responses": {"200": {"description": "**Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Contact"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Contact Update**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/ContactPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "contacts_destroy", "description": "Remove a contact.\n\nPlease note, that a contact can only be removed if\nit is not longer in use in a network service or config\nthrough a role assignment.", "tags": ["contacts"], "responses": {"200": {"description": "**Contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Contact"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}, "409": {"description": "ConstraintViolation", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/conflict.html"]}, "title": {"example": "There is a conflict preventing success"}, "status": {"example": 409}}}, {"type": "object", "properties": {"conflict": {"type": "array", "items": {"$ref": "#/components/schemas/Conflict"}}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/role-assignments": {"get": {"operationId": "role_assignments_list", "description": "List all role assignments for a contact.", "tags": ["role-assignments"], "responses": {"200": {"description": "List of: **A role assignment for a contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/RoleAssignment"}}}}}, "206": {"description": "Paginated List of: **A role assignment for a contact**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/RoleAssignment"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "contact", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by contact"}, {"name": "role", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by role"}]}, "post": {"operationId": "role_assignments_create", "description": "Assign a `Role` to a `Contact`.\n\nThe contact needs to have all fields filled, which the\nrole requires. If this is not the case a `400`\n`UnableToFulfill` will be returned.", "tags": ["role-assignments"], "responses": {"201": {"description": "**A role assignment for a contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleAssignment"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**A role assignment request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleAssignmentRequest"}}}}}}, "/role-assignments/{id}": {"get": {"operationId": "role_assignments_read", "description": "Get a role assignment for a contact.", "tags": ["role-assignments"], "responses": {"200": {"description": "**A role assignment for a contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleAssignment"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "role_assignments_destroy", "description": "Remove a role assignment from a contact.\n\nIf the contact is still in use with a given role required,\nthis will yield an `UnableToFulfill` error.", "tags": ["role-assignments"], "responses": {"200": {"description": "**A role assignment for a contact**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleAssignment"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}, "409": {"description": "ConstraintViolation", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/conflict.html"]}, "title": {"example": "There is a conflict preventing success"}, "status": {"example": 409}}}, {"type": "object", "properties": {"conflict": {"type": "array", "items": {"$ref": "#/components/schemas/Conflict"}}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/health": {"get": {"operationId": "api_health_read", "description": "Get the IX-API service health status.", "tags": ["health"], "responses": {"200": {"description": "**Health Status Response**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiHealth"}}}}}}}, "/implementation": {"get": {"operationId": "api_implementation_read", "description": "Get the API implementation details.", "tags": ["implementation"], "responses": {"200": {"description": "**API Implementation**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiImplementation"}}}}}}}, "/extensions": {"get": {"operationId": "api_extensions_list", "description": "List provider extensions to the IX-API.", "tags": ["extensions"], "responses": {"200": {"description": "List of: **Implementation specific API extensions**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ApiExtension"}}}}}, "206": {"description": "Paginated List of: **Implementation specific API extensions**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ApiExtension"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}]}}, "/ips": {"get": {"operationId": "ips_list", "description": "List all ip addresses (and prefixes).", "tags": ["ips"], "responses": {"200": {"description": "List of: **IP-Address**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/IpAddress"}}}}}, "206": {"description": "Paginated List of: **IP-Address**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/IpAddress"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "network_service", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service"}, {"name": "network_service_config", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service_config"}, {"name": "network_feature", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_feature"}, {"name": "network_feature_config", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_feature_config"}, {"name": "version", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by version"}, {"name": "fqdn", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by fqdn"}, {"name": "prefix_length", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "Filter by prefix_length"}, {"name": "valid_not_before", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by valid_not_before"}, {"name": "valid_not_after", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by valid_not_after"}]}, "post": {"operationId": "ips_create", "description": "Add an ip host address or network prefix.", "tags": ["ips"], "responses": {"201": {"description": "**IP-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**IP-Address / Prefix allocation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddressRequest"}}}}}}, "/ips/{id}": {"get": {"operationId": "ips_read", "description": "Get a single ip addresses by it's id.", "tags": ["ips"], "responses": {"200": {"description": "**IP-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "ips_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate an ip address object.\n\nYou can only update\nIP addresses within your current scope. Not all\naddresses you can read you can update.\n\nIf the ip address was allocated for you, you might\nnot be able to change anything but the `fqdn`.", "tags": ["ips"], "responses": {"200": {"description": "**IP-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**IP-Address Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddressUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "ips_partial_update", "description": "Update an ip address.\n\nYou can only update\nIP addresses within your current scope. Not all\naddresses you can read you can update.\n\nIf the ip address was allocated for you, you might\nnot be able to change anything but the `fqdn`.", "tags": ["ips"], "responses": {"200": {"description": "**IP-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**IP-Address Update**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/IpAddressPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/macs": {"get": {"operationId": "macs_list", "description": "List all mac addresses managed by the authorized customer.", "tags": ["macs"], "responses": {"200": {"description": "List of: **MAC-Address**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MacAddress"}}}}}, "206": {"description": "Paginated List of: **MAC-Address**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MacAddress"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "network_service_config", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service_config"}, {"name": "address", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by address"}, {"name": "valid_not_before", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by valid_not_before"}, {"name": "valid_not_after", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by valid_not_after"}]}, "post": {"operationId": "macs_create", "description": "Register a mac address.", "tags": ["macs"], "responses": {"201": {"description": "**MAC-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MacAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**MAC-Address Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MacAddressRequest"}}}}}}, "/macs/{id}": {"get": {"operationId": "macs_read", "description": "Get a single mac address by it's id.", "tags": ["macs"], "responses": {"200": {"description": "**MAC-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MacAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "macs_destroy", "description": "Remove a mac address.", "tags": ["macs"], "responses": {"200": {"description": "**MAC-Address**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MacAddress"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/network-services": {"get": {"operationId": "network_services_list", "description": "List available `NetworkService`s.", "tags": ["network-services"], "responses": {"200": {"description": "List of: **Polymorphic Network Services**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkService"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Network Services**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkService"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "type", "schema": {"type": "string", "enum": ["exchange_lan", "p2p_vc", "p2mp_vc", "mp2mp_vc", "cloud_vc"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "pop", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by pop"}, {"name": "product_offering", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by product_offering"}]}, "post": {"operationId": "network_services_create", "description": "Create a new network service", "tags": ["network-services"], "responses": {"201": {"description": "**Polymorphic Network Services**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkService"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Service Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceRequest"}}}}}}, "/network-services/{id}": {"get": {"operationId": "network_services_read", "description": "Get a specific `network-service` by id.", "tags": ["network-services"], "responses": {"200": {"description": "**Polymorphic Network Services**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkService"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "network_services_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a network service.", "tags": ["network-services"], "responses": {"202": {"description": "**Polymorphic Network Services**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkService"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Service Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "network_services_partial_update", "description": "Update a network service", "tags": ["network-services"], "responses": {"202": {"description": "**Polymorphic Network Services**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkService"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Network Service Patch**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkServicePatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "network_services_destroy", "description": "Request decomissioning of the network service.\n\nThe network service will enter the state of\n`decommission_requested`. The request will\ncascade to related network service and feature\nconfigs.\n\nAn *optional request body* can be provided to request\na specific service termination date.\n\nIf no date is given in the request body, it is assumed to\nbe the earliest possible date.\n\nPossible values for `decommission_at` can be queried\nthrough the `network_service_cancellation_policy_read`\noperation.\n\nThe response will contain the dates on which the\nchanges will be effected.", "tags": ["network-services"], "responses": {"202": {"description": "**Polymorphic Network Services**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkService"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "CancellationPolicyError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/cancellation-policy-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html", "https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Requested cancellation date outside of notice period."}, "status": {"example": 400}}}, {"type": "object", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service.\n\nSee the service `cancellation-policy` for details."}, "charged_until": {"type": "string", "format": "date", "description": "The date until the service is payed for.\nTypically `\u2265 decommission_at`."}, "properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Service Cancellation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/network-services/{id}/statistics": {"get": {"operationId": "network_services_statistics_read", "description": "Read a `NetworkService`s aggregated statistics.\n\n\nA `start` and `end` query parameter can be used to\nretrieve the aggregated traffic for a given window.\nIn this case the key of the returned statistics is `custom`.\n\nWith a given `start` and `end` window, the resolution for\nthe aggregated data is chosen by the implementation.\n\nYou need to check the `accuracy` attribute of the aggregate,\nto see if the data can be used for the desired\nusecase. The `accuracy` is the ratio of *total samples* to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a sliding window\nis assumed and key value pairs of resolutions and aggregated\nstatistics are returned.", "tags": ["network-services"], "responses": {"200": {"description": "**Mapping of Aggregated Statistics**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Aggregate"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Beginning of the traffic aggregation."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the traffic aggregation.\nDefault is `now`."}]}}, "/network-services/{id}/statistics/{aggregate}/timeseries": {"get": {"operationId": "network_services_statistics_timeseries_read", "description": "Read a `NetworkService`s aggregated timeseries.\nThe resolution is defined by the aggregate.", "tags": ["network-services"], "responses": {"200": {"description": "**Aggregated Statistics Timeseries**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AggregateTimeseries"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "aggregate", "in": "path", "required": true, "description": "Get by aggregate", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "start", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "Start of the timeseries."}, {"name": "end", "schema": {"type": "string", "format": "date-time"}, "required": false, "in": "query", "description": "End of the timeseries.\n\nDefault: `now`"}, {"name": "fields", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Select fields from the aggregates to export as a timeseries.\n\nDefault: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`"}]}}, "/network-services/{id}/change-request": {"get": {"operationId": "network_service_change_request_read", "description": "Get the change request.", "tags": ["network-services"], "responses": {"202": {"description": "**NetworkServiceChangeRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceChangeRequest"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "post": {"operationId": "network_service_change_request_create", "description": "Request a change to the network service.\n\nThe B-side participant in a peer-to-peer network service\n(`p2p_vc`) can issue a change request, expressing a\ndesired change in the capacity.\n\nThe change is accepted when the A-side has configured\nthe network service and config with the new bandwidth.\nThis is done using the `network_service_update`,\n`network_service_partial_update`,\n`network_service_config_update` or\n`network_service_config_partial_update` operations by\nthe A-side.\n\nThese changes can sometimes require a change of the\nproduct offering. The product offering may only\ndiffer in bandwidth.\n\nThe network service will change its state from `production`\ninto `production_change_pending`.\n\nA change can by rejected (by the A-side) or retracted\n(by the B-side) using the\n`network_service_change_request_destroy` operation.\n\nOnly one change request may be issued at a time.\n\nA change request by the A-side is not a valid request\nand will be rejected.", "tags": ["network-services"], "responses": {"202": {"description": "**NetworkServiceChangeRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceChangeRequest"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**NetworkServiceChangeRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceChangeRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "network_service_change_request_destroy", "description": "Retract or reject a change to the network service.", "tags": ["network-services"], "responses": {"202": {"description": "**NetworkServiceChangeRequest**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceChangeRequest"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/network-services/{id}/cancellation-policy": {"get": {"operationId": "network_service_cancellation_policy_read", "description": "The cancellation-policy can be queried to answer\nthe questions:\n\nIf I cancel my service, *when will it be technically\ndecommissioned*?\nIf I cancel my service, *until what date will I be charged*?\n\nWhen the query parameter `decommision_at` is not provided\nit will provide the first possible cancellation date\nand charge period if cancelled at above date.\n\nThe granularity of the date field is a day, the start and end\nof which are to be interpreted by the IXP (some may use UTC,\nsome may use their local time zone).", "tags": ["network-services"], "responses": {"200": {"description": "**Cancellation Policy**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationPolicy"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "decommission_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "By providing a date in the format `YYYY-MM-DD` you can\nquery the policy what would happen if you request a\ndecommissioning on this date."}]}}, "/network-features": {"get": {"operationId": "network_features_list", "description": "List available network features.", "tags": ["network-features"], "responses": {"200": {"description": "List of: **Polymorphic Network Feature**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkFeature"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Network Feature**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NetworkFeature"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "type", "schema": {"type": "string", "enum": ["route_server"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "required", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by required"}, {"name": "network_service", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service"}, {"name": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}]}}, "/network-features/{id}": {"get": {"operationId": "network_features_read", "description": "Get a single network feature by it's id.", "tags": ["network-features"], "responses": {"200": {"description": "**Polymorphic Network Feature**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkFeature"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/member-joining-rules": {"get": {"operationId": "member_joining_rules_list", "description": "Get a list of joining rules", "tags": ["member-joining-rules"], "responses": {"200": {"description": "List of: **Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}}, "206": {"description": "Paginated List of: **Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "headers": {"X-Pagination-Limit": {"description": "The maximum number of items returned", "schema": {"type": "integer"}}, "X-Pagination-Offset": {"description": "Current offset of the first item in the collection", "schema": {"type": "integer"}}, "X-Pagination-Items": {"description": "Total number of items in the collection", "schema": {"type": "integer"}}, "X-Pagination-Pages": {"description": "Total number of pages", "schema": {"type": "integer"}}, "X-Pagination-Page": {"description": "Current page", "schema": {"type": "integer"}}, "X-Pagination-Token": {"description": "An identifier that changes when the collection changes between requests.", "schema": {"type": "string"}}, "X-Pagination-Next": {"description": "Path to the next page in the collection", "schema": {"type": "string"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "network_service", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by network_service"}]}, "post": {"operationId": "member_joining_rules_create", "description": "Create a member joining rule", "tags": ["member-joining-rules"], "responses": {"201": {"description": "**Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Member Joining Rule Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRuleRequest"}}}}}}, "/member-joining-rules/{id}": {"get": {"operationId": "member_joining_rules_read", "description": "Get a single rule", "tags": ["member-joining-rules"], "responses": {"200": {"description": "**Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "put": {"operationId": "member_joining_rules_update", "description": "**DEPRECATION NOTICE**: This operation will be removed in favor\nof using `PATCH` for all updates.\n\nUpdate a joining rule.", "tags": ["member-joining-rules"], "responses": {"200": {"description": "**Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Member Joining Rule Update**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRuleUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "member_joining_rules_partial_update", "description": "Update a joining rule", "tags": ["member-joining-rules"], "responses": {"200": {"description": "**Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Polymorphic Member Joining Rule Update**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRulePatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "member_joining_rules_destroy", "description": "Delete a joining rule", "tags": ["member-joining-rules"], "responses": {"200": {"description": "**Polymorphic Member Joining Rule**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRule"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "UnableToFulfill", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/unable-to-fulfill.html"]}, "title": {"example": "Unable to fulfill your request."}, "status": {"example": 400}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/routing-functions": {"get": {"operationId": "routing_functions_list", "description": "Get a list of routing functions", "tags": ["routing-functions"], "responses": {"200": {"description": "List of: **Routing Function**", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/RoutingFunction"}}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"name": "page_limit", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The maximum number of items in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_offset", "schema": {"type": "integer"}, "required": false, "in": "query", "description": "The offset of the first item in the response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "page_token", "schema": {"type": "string"}, "required": false, "in": "query", "description": "The pagination token from the initial response.\n[*(Pagination)*](#section/Pagination)"}, {"name": "state", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state"}, {"name": "state__is_not", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by state__is_not"}, {"name": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the managing [account](#tag/accounts)."}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by the ID of the consuming [account](#tag/accounts)."}, {"name": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"name": "asn", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by asn"}]}, "post": {"operationId": "routing_functions_create", "description": "Create a routing function", "tags": ["routing-functions"], "responses": {"201": {"description": "**Routing Function**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoutingFunction"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Routing Function Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoutingFunctionRequest"}}}}}}, "/routing-functions/{id}": {"get": {"operationId": "routing_functions_read", "description": "Get a single routing function instance.", "tags": ["routing-functions"], "responses": {"200": {"description": "**Routing Function**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoutingFunction"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "routing_functions_partial_update", "description": "Update a routing function", "tags": ["routing-functions"], "responses": {"200": {"description": "**Routing Function**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoutingFunction"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Routing Function Patch**", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/RoutingFunctionPatch"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "delete": {"operationId": "routing_functions_destroy", "description": "Request decomissioning the routing function.\n\nThe cancellation policy of the routing function applies\nhere and is independent from the\npolicy of the network-service and network-service-config\nusing the routing function.\n\nThe routing function will assume the state\n`decommission_requested`.\n\nThe decommissioning request will *not* cascade\nto network services and configs.", "tags": ["routing-functions"], "responses": {"202": {"description": "**Routing Function**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoutingFunction"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "CancellationPolicyError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/cancellation-policy-error.html", "https://errors.ix-api.net/v2/unable-to-fulfill.html", "https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Requested cancellation date outside of notice period."}, "status": {"example": 400}}}, {"type": "object", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service.\n\nSee the service `cancellation-policy` for details."}, "charged_until": {"type": "string", "format": "date", "description": "The date until the service is payed for.\nTypically `\u2265 decommission_at`."}, "properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "requestBody": {"description": "**Service Cancellation Request**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationRequest"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}}, "/routing-functions/{id}/cancellation-policy": {"get": {"operationId": "routing_functions_cancellation_policy_read", "description": "The cancellation-policy can be queried to answer\nthe questions:\n\nIf I cancel my subscription, *when will it be technically\ndecommissioned*?\nIf I cancel my subscription, *until what date will I be charged*?\n\nWhen the query parameter `decommision_at` is not provided\nit will provide the first possible cancellation date\nand charge period if cancelled at above date.\n\nThe granularity of the date field is a day, the start and end\nof which are to be interpreted by the IXP (some may use UTC,\nsome may use their local time zone).", "tags": ["routing-functions"], "responses": {"200": {"description": "**Cancellation Policy**", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancellationPolicy"}}}}, "403": {"description": "PermissionDenied", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/permission-denied.html"]}, "title": {"example": "You do not have permission to perform this action."}, "status": {"example": 403}}}, {}]}}}}, "401": {"description": "Authentication", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/authentication-error.html", "https://errors.ix-api.net/v2/signature-expired.html"]}, "title": {"example": "Authentication Credentials Invalid"}, "status": {"example": 401}}}, {}]}}}}, "404": {"description": "NotFound", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/not-found.html"]}, "title": {"example": "Not found."}, "status": {"example": 404}}}, {}]}}}}, "400": {"description": "ValidationError", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/ProblemResponse"}, {"type": "object", "properties": {"type": {"type": "string", "enum": ["https://errors.ix-api.net/v2/validation-error.html"]}, "title": {"example": "Some fields did not validate."}, "status": {"example": 400}}}, {"type": "object", "properties": {"properties": {"type": "array", "items": {"$ref": "#/components/schemas/ValidationErrorProperty"}, "description": "A list of failed validations identified by the\nproperty `name` giving a `reason` why it failed."}}}]}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}, {"name": "decommission_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "By providing a date in the format `YYYY-MM-DD` you can\nquery the policy what would happen if you request a\ndecommissioning on this date."}]}}}, "components": {"schemas": {"AuthToken": {"title": "AuthToken", "type": "object", "description": "AuthToken", "properties": {"access_token": {"type": "string"}, "refresh_token": {"type": "string"}}, "required": ["refresh_token", "access_token"]}, "AuthTokenRequest": {"title": "AuthTokenRequest", "type": "object", "description": "AuthTokenRequest", "properties": {"api_key": {"type": "string", "minLength": 16, "maxLength": 16}, "api_secret": {"type": "string", "minLength": 86, "maxLength": 86}}, "required": ["api_secret", "api_key"]}, "RefreshTokenRequest": {"title": "RefreshTokenRequest", "type": "object", "description": "RefreshTokenRequest", "properties": {"refresh_token": {"type": "string"}}, "required": ["refresh_token"]}, "CancellationPolicy": {"title": "CancellationPolicy", "type": "object", "description": "Cancellation Policy", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "This field denotes the first possible cancellation\ndate of the service."}, "charged_until": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`."}}, "required": ["charged_until", "decommission_at"]}, "CancellationRequest": {"title": "CancellationRequest", "type": "object", "description": "Service Cancellation Request", "properties": {"decommission_at": {"type": "string", "format": "date", "description": "An optional date for scheduling the cancellation\nand service decommissioning."}}}, "AvailabilityZone": {"title": "AvailabilityZone", "type": "object", "description": "AvailabilityZone", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `AvailabilityZone`.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "The name (description) for the availability zone\n", "example": "Network A", "maxLength": 80}}, "required": ["name", "id"]}, "CloudNetworkProductOffering": {"title": "CloudNetworkProductOffering", "type": "object", "description": "Cloud Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Product Offering`.", "example": "Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "service_provider_region": {"type": "string", "description": "The service provider offers the network service for a\nspecific region.\n", "example": "eu-central-1", "nullable": true}, "service_provider_pop": {"type": "string", "description": "The datacenter id of the partner NNI to the service provider.\nIt supposed to be used when identifying a location via\nthe cloud provider's APIs.\n", "example": "INX6", "nullable": true}, "service_provider_pop_name": {"type": "string", "description": "The datacenter description of the partner NNI to the service provider.\n", "example": "Interxion FRA6, Frankfurt, DEU", "nullable": true}, "service_provider_workflow": {"type": "string", "enum": ["exchange_first", "provider_first"], "description": "When the workflow is `provider_first` the subscriber creates\na circuit with the cloud provider and provides a `cloud_key` for filtering\nthe product-offerings.\n\nIf the workflow is `exchange_first` the IX will create\nthe cloud circuit on the provider side.\n", "example": "exchange_first"}, "delivery_method": {"type": "string", "enum": ["dedicated", "shared"], "description": "The exchange delivers the service over a `shared` or `dedicated` NNI."}, "diversity": {"type": "integer", "description": "The service can be delivered over multiple handovers from\nthe exchange to the `service_provider`.\nThe `diversity` denotes the number of handovers between the\nexchange and the service provider. A value of two signals a\nredundant service.\n\nOnly one network service configuration for each `handover` and\n`cloud_vlan` can be created.", "minimum": 1}, "nsc_supported_cloud_config_peering_types": {"type": "array", "items": {"type": "string"}, "description": "The supported peering types for the cloud network service.\n\nIn case selecting a peering type is required, the\n`peering_type` property will be in the\n`nsc_required_cloud_config_fields` list.\n", "example": ["private", "public", "microsoft"]}, "nsc_required_cloud_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `cloud_config` of a corresponding\n`NetworkServiceConfig`.\n\nFor example: `\"vlan\"`, `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_neighbor_asn", "bgp_password", "local_address_primary"]}, "nsc_supported_cloud_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"vlan\"`, \"`peering_type`\",\n`\"bgp_password\"`, `\"bgp_neighbor_address\"`, ...\n", "example": ["bgp_neighbor_asn", "bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "nsc_supported_cloud_config_fields", "nsc_required_cloud_config_fields", "nsc_supported_cloud_config_peering_types", "diversity", "delivery_method", "service_provider_workflow", "service_provider_pop", "service_provider_region", "nsc_supported_l3_config_fields", "nsc_required_l3_config_fields", "bandwidth_max", "bandwidth_min", "service_metro_area", "service_metro_area_network", "provider_vlans", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "CloudNetworkProductOfferingPatch": {"title": "CloudNetworkProductOfferingPatch", "type": "object", "description": "Cloud Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Product Offering`.", "example": "Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "service_provider_region": {"type": "string", "description": "The service provider offers the network service for a\nspecific region.\n", "example": "eu-central-1", "nullable": true}, "service_provider_pop": {"type": "string", "description": "The datacenter id of the partner NNI to the service provider.\nIt supposed to be used when identifying a location via\nthe cloud provider's APIs.\n", "example": "INX6", "nullable": true}, "service_provider_pop_name": {"type": "string", "description": "The datacenter description of the partner NNI to the service provider.\n", "example": "Interxion FRA6, Frankfurt, DEU", "nullable": true}, "service_provider_workflow": {"type": "string", "enum": ["exchange_first", "provider_first"], "description": "When the workflow is `provider_first` the subscriber creates\na circuit with the cloud provider and provides a `cloud_key` for filtering\nthe product-offerings.\n\nIf the workflow is `exchange_first` the IX will create\nthe cloud circuit on the provider side.\n", "example": "exchange_first"}, "delivery_method": {"type": "string", "enum": ["dedicated", "shared"], "description": "The exchange delivers the service over a `shared` or `dedicated` NNI."}, "diversity": {"type": "integer", "description": "The service can be delivered over multiple handovers from\nthe exchange to the `service_provider`.\nThe `diversity` denotes the number of handovers between the\nexchange and the service provider. A value of two signals a\nredundant service.\n\nOnly one network service configuration for each `handover` and\n`cloud_vlan` can be created.", "minimum": 1}, "nsc_supported_cloud_config_peering_types": {"type": "array", "items": {"type": "string"}, "description": "The supported peering types for the cloud network service.\n\nIn case selecting a peering type is required, the\n`peering_type` property will be in the\n`nsc_required_cloud_config_fields` list.\n", "example": ["private", "public", "microsoft"]}, "nsc_required_cloud_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `cloud_config` of a corresponding\n`NetworkServiceConfig`.\n\nFor example: `\"vlan\"`, `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_neighbor_asn", "bgp_password", "local_address_primary"]}, "nsc_supported_cloud_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"vlan\"`, \"`peering_type`\",\n`\"bgp_password\"`, `\"bgp_neighbor_address\"`, ...\n", "example": ["bgp_neighbor_asn", "bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "ConnectionProductOffering": {"title": "ConnectionProductOffering", "type": "object", "description": "Connection Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Connection Product Offering`.", "example": "Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZzo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "cross_connect_initiator": {"type": "string", "enum": ["exchange", "subscriber"], "description": "A cross connect can be initiated by either the\nexchange or the subscriber.\n\nThis property affects which side has to provide\na LOA and demarc information."}, "handover_pop": {"type": "string", "description": "The ID of the point of presence (see `/pops`), where\nthe physical port will be present.\n", "example": "pop:127388:LD3", "nullable": true}, "maximum_port_quantity": {"type": "integer", "description": "The maximum amount of ports which can be aggregated\nin the connection. `null` means no limit.", "nullable": true, "minimum": 1}, "required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The connection will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe role assignments are associated with the connection\nthrough the `role_assignments` list property.", "example": ["Um9sZTo0Mg=="], "readOnly": true}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "cross_connect_initiator", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "ConnectionProductOfferingPatch": {"title": "ConnectionProductOfferingPatch", "type": "object", "description": "Conncetion Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Conncetion Product Offering`.", "example": "Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZ1BhdGNoOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "cross_connect_initiator": {"type": "string", "enum": ["exchange", "subscriber"], "description": "A cross connect can be initiated by either the\nexchange or the subscriber.\n\nThis property affects which side has to provide\na LOA and demarc information."}, "handover_pop": {"type": "string", "description": "The ID of the point of presence (see `/pops`), where\nthe physical port will be present.\n", "example": "pop:127388:LD3", "nullable": true}, "maximum_port_quantity": {"type": "integer", "description": "The maximum amount of ports which can be aggregated\nin the connection. `null` means no limit.", "nullable": true, "minimum": 1}, "required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The connection will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe role assignments are associated with the connection\nthrough the `role_assignments` list property.", "example": ["Um9sZTo0Mg=="], "readOnly": true}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "Device": {"title": "Device", "type": "object", "description": "Device", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Device`.", "example": "RGV2aWNlOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the device\n", "example": "edge2.moon.space-ix.net", "maxLength": 180}, "pop": {"type": "string", "description": "The `PointOfPresence` the device is in.", "example": "UG9pbnRPZlByZXNlbmNlOjQy"}, "capabilities": {"type": "array", "items": {"$ref": "#/components/schemas/DeviceCapability"}}, "facility": {"type": "string", "description": "Identifier of the facility where the device\nis physically based.", "example": "RmFjaWxpdHk6NDI=", "readOnly": true}}, "required": ["pop", "name", "id"]}, "DeviceCapability": {"title": "DeviceCapability", "type": "object", "description": "Device Capability", "properties": {"media_type": {"type": "string", "description": "The media type of the port (e.g. 1000BASE-LX, 10GBASE-LR, ...)\n", "example": "1000BASE-LX", "readOnly": true, "maxLength": 20}, "speed": {"type": "integer", "description": "Speed of port in Mbit/s\n", "example": 1000, "readOnly": true}, "max_lag": {"type": "integer", "format": "int32", "description": "Maximum count of ports which can be bundled to a max_lag", "example": 8, "readOnly": true, "minimum": 0, "maximum": 32767}, "availability": {"type": "integer", "format": "int32", "description": "Count of available ports on device\n", "example": 23, "readOnly": true, "minimum": 0, "maximum": 2147483647}}, "required": ["availability", "max_lag", "speed", "media_type"]}, "DeviceConnection": {"title": "DeviceConnection", "type": "object", "description": "Device Connection", "properties": {"capacity_max": {"type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647}, "device": {"type": "string", "description": "The `id` of the related `Device`.\n\n", "example": "RGV2aWNlOjQy"}, "connected_device": {"type": "string", "description": "The `id` of the related `Device`.\n\n", "example": "RGV2aWNlOjQy"}, "id": {"type": "string", "description": "The *primary identifier* of the `Device Connection`.", "example": "RGV2aWNlQ29ubmVjdGlvbjo0Mg==", "readOnly": true}}, "required": ["id", "connected_device", "device", "capacity_max"]}, "ExchangeLanNetworkProductOffering": {"title": "ExchangeLanNetworkProductOffering", "type": "object", "description": "Exchange Lan Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Product Offering`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "exchange_lan_network_service": {"type": "string", "description": "The id of the exchange lan network service.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "exchange_lan_network_service", "nsc_supported_l3_config_fields", "nsc_required_l3_config_fields", "bandwidth_max", "bandwidth_min", "service_metro_area", "service_metro_area_network", "provider_vlans", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "ExchangeLanNetworkProductOfferingPatch": {"title": "ExchangeLanNetworkProductOfferingPatch", "type": "object", "description": "Exchange Lan Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Product Offering`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "exchange_lan_network_service": {"type": "string", "description": "The id of the exchange lan network service.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "Facility": {"title": "Facility", "type": "object", "description": "Facility", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Facility`.", "example": "RmFjaWxpdHk6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the Datacenter as called by the operator\n", "example": "Crater DC Moon 1", "maxLength": 80}, "metro_area": {"type": "string", "description": "Id of the `MetroArea` the DC is located in.\n", "example": "met:93214980:BER"}, "address_country": {"type": "string", "description": "ISO 3166-1 alpha-2 country code, for example DE\n", "example": "US", "maxLength": 2}, "address_locality": {"type": "string", "description": "The locality/city. For example, Mountain View.", "example": "Mountain View", "maxLength": 80}, "address_region": {"type": "string", "description": "The region. For example, CA", "example": "CA", "maxLength": 80}, "postal_code": {"type": "string", "description": "A postal code. For example, 9404", "example": "9409", "maxLength": 18}, "street_address": {"type": "string", "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "example": "1600 Amphitheatre Pkwy.", "maxLength": 80}, "peeringdb_facility_id": {"type": "integer", "format": "int32", "description": "[PeeringDB](https://www.peeringdb.com) facitlity ID,\ncan be extracted from the url https://www.peeringdb.com/fac/$id\n", "example": 103, "nullable": true, "minimum": 0, "maximum": 2147483647}, "organisation_name": {"type": "string", "description": "Name of Datacenter operator\n", "example": "Moon Datacenters", "maxLength": 80}, "pops": {"type": "array", "items": {"type": "string"}, "description": "List of pops reachable from the `Facility`.", "example": ["UG9pbnRPZlByZXNlbmNlOjQy"]}, "latitude": {"type": "number", "description": "Latitude of the facility's location.\n", "example": 52.437879}, "longitude": {"type": "number", "description": "Longitude of the facility's location.\n", "example": 13.650965}}, "required": ["pops", "organisation_name", "street_address", "postal_code", "address_region", "address_locality", "address_country", "metro_area", "name", "id"]}, "MP2MPNetworkProductOffering": {"title": "MP2MPNetworkProductOffering", "type": "object", "description": "MP2MP Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Product Offering`.", "example": "TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "nsc_supported_l3_config_fields", "nsc_required_l3_config_fields", "bandwidth_max", "bandwidth_min", "service_metro_area", "service_metro_area_network", "provider_vlans", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "MP2MPNetworkProductOfferingPatch": {"title": "MP2MPNetworkProductOfferingPatch", "type": "object", "description": "MP2MP Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Product Offering`.", "example": "TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "MetroArea": {"title": "MetroArea", "type": "object", "description": "MetroArea", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `MetroArea`.", "example": "TWV0cm9BcmVhOjQy", "readOnly": true}, "un_locode": {"type": "string", "description": "The UN/LOCODE for identifying the metro area.\n", "example": "DE FRA", "maxLength": 6}, "iata_code": {"type": "string", "description": "The three letter IATA airport code for identiying the\nmetro area.\n", "example": "FRA", "maxLength": 3}, "display_name": {"type": "string", "description": "The name of the metro area. Likely the same as the IATA code.\n", "example": "FRA", "maxLength": 64}, "facilities": {"type": "array", "items": {"type": "string"}, "description": "List of facilities the metro area network.", "example": ["RmFjaWxpdHk6NDI="]}, "metro_area_networks": {"type": "array", "items": {"type": "string"}, "description": "List of networks in the metro area.", "example": ["TWV0cm9BcmVhTmV0d29yazo0Mg=="]}}, "required": ["metro_area_networks", "facilities", "display_name", "iata_code", "un_locode", "id"]}, "MetroAreaNetwork": {"title": "MetroAreaNetwork", "type": "object", "description": "MetroAreaNetwork", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `MetroAreaNetwork`.", "example": "TWV0cm9BcmVhTmV0d29yazo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "The name of the metro area network.\n", "example": "MY-IX-FRA1", "maxLength": 32}, "metro_area": {"type": "string", "description": "The id of the metro area.\n", "example": "met:199399:FRA"}, "service_provider": {"type": "string", "description": "The service provider is operating the network.\nUsually the exchange.\n", "example": "MY-IX", "maxLength": 128}, "pops": {"type": "array", "items": {"type": "string"}, "description": "List of pops in the metro area network.", "example": ["UG9pbnRPZlByZXNlbmNlOjQy"]}}, "required": ["pops", "service_provider", "metro_area", "name", "id"]}, "P2MPNetworkProductOffering": {"title": "P2MPNetworkProductOffering", "type": "object", "description": "P2MP Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Product Offering`.", "example": "UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmc6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "nsc_supported_l3_config_fields", "nsc_required_l3_config_fields", "bandwidth_max", "bandwidth_min", "service_metro_area", "service_metro_area_network", "provider_vlans", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "P2MPNetworkProductOfferingPatch": {"title": "P2MPNetworkProductOfferingPatch", "type": "object", "description": "P2MP Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Product Offering`.", "example": "UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmdQYXRjaDo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "P2PNetworkProductOffering": {"title": "P2PNetworkProductOffering", "type": "object", "description": "P2P Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Product Offering`.", "example": "UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZzo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "nsc_supported_l3_config_fields", "nsc_required_l3_config_fields", "bandwidth_max", "bandwidth_min", "service_metro_area", "service_metro_area_network", "provider_vlans", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "P2PNetworkProductOfferingPatch": {"title": "P2PNetworkProductOfferingPatch", "type": "object", "description": "P2P Network Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Product Offering`.", "example": "UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZ1BhdGNoOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n\nIn case of a `p2p_vc`, the `service_metro_area_network` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\n\nIn case of a `p2p_vc`, the `service_metro_area` refers\nto the B-side of the point-to-point connection.\nThe B-side is the accepting party.\n", "example": "met:213913485:LON"}, "bandwidth_min": {"type": "integer", "description": "When configuring access to the network service, at least\nthis `capacity` must be provided.", "nullable": true, "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "When not `null`, this value enforces a mandatory\nrate limit for all network service configs.", "nullable": true, "minimum": 0}, "nsc_required_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "A list of required attributes in the `l3_config` of a corresponding\n`NetworkServiceConfig` when used with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"bgp_neighbor_asn\"`, `\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}, "nsc_supported_l3_config_fields": {"type": "array", "items": {"type": "string"}, "description": "The list of fields which are supported in the `l3_config`\nwhen creating the network service config with a `routing_function`.\n\nFor example: `\"bgp_password\"`, `\"bgp_neighbor_address\"`\n`\"local_address_primary\"`, ...\n", "example": ["bgp_password", "local_address_primary"]}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "PointOfPresence": {"title": "PointOfPresence", "type": "object", "description": "Point Of Presence", "properties": {"name": {"type": "string", "maxLength": 40}, "facility": {"type": "string", "description": "The pop is located in this `Facility`.", "example": "RmFjaWxpdHk6NDI="}, "metro_area_network": {"type": "string", "description": "The `id` of the related `MetroAreaNetwork`.\n\n", "example": "TWV0cm9BcmVhTmV0d29yazo0Mg=="}, "devices": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `Device`.\n\n", "example": ["RGV2aWNlOjQy"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Point Of Presence`.", "example": "UG9pbnRPZlByZXNlbmNlOjQy", "readOnly": true}, "availability_zone": {"type": "string", "description": "Availability zone of the pop.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}}, "required": ["id", "devices", "metro_area_network", "facility", "name"]}, "ProductOffering": {"title": "ProductOffering", "description": "ProductOffering", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"connection": "#/components/schemas/ConnectionProductOffering", "exchange_lan": "#/components/schemas/ExchangeLanNetworkProductOffering", "p2p_vc": "#/components/schemas/P2PNetworkProductOffering", "mp2mp_vc": "#/components/schemas/MP2MPNetworkProductOffering", "p2mp_vc": "#/components/schemas/P2MPNetworkProductOffering", "cloud_vc": "#/components/schemas/CloudNetworkProductOffering", "routing_function": "#/components/schemas/RoutingFunctionProductOffering"}}}, "ProductOfferingPatch": {"title": "ProductOfferingPatch", "description": "ProductOfferingPatch", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"connection": "#/components/schemas/ConnectionProductOfferingPatch", "exchange_lan": "#/components/schemas/ExchangeLanNetworkProductOfferingPatch", "p2p_vc": "#/components/schemas/P2PNetworkProductOfferingPatch", "mp2mp_vc": "#/components/schemas/MP2MPNetworkProductOfferingPatch", "p2mp_vc": "#/components/schemas/P2MPNetworkProductOfferingPatch", "cloud_vc": "#/components/schemas/CloudNetworkProductOfferingPatch", "routing_function": "#/components/schemas/RoutingFunctionProductOfferingPatch"}}}, "RoutingFunctionProductOffering": {"title": "RoutingFunctionProductOffering", "type": "object", "description": "Routing Function Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Routing Function Product Offering`.", "example": "Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nOjQy", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "bandwidth_min": {"type": "integer", "description": "The minimum bandwidth of the routing service in Mbit/s.", "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "The maximum bandwidth of the routing service in Mbit/s.", "minimum": 0}}, "allOf": [{"$ref": "#/components/schemas/ProductOffering"}], "required": ["type", "bandwidth_max", "bandwidth_min", "upgrade_allowed", "downgrade_allowed", "service_provider", "physical_port_speed", "handover_metro_area", "handover_metro_area_network", "resource_type", "display_name", "name", "id"]}, "RoutingFunctionProductOfferingPatch": {"title": "RoutingFunctionProductOfferingPatch", "type": "object", "description": "Routing Function Product Offering", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Routing Function Product Offering`.", "example": "Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=", "readOnly": true}, "name": {"type": "string", "description": "Name of the product", "maxLength": 160}, "display_name": {"type": "string", "maxLength": 256}, "exchange_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the internet exchange.\n", "example": "https://example.ix/resources/ixpLogo"}, "service_provider_logo": {"type": "string", "format": "uri", "description": "An URI referencing the logo of the service provider.\n", "example": "https://example.ix/resources/providerLogo"}, "product_logo": {"type": "string", "format": "uri", "description": "An URI referencing a logo for the product offered.\n", "example": "https://example.ix/resources/products/activeCloudPremium"}, "resource_type": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config", "routing_function"], "description": "The resource type refers to an ix-api resource.\n", "example": "network_service"}, "handover_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`. The service will be accessed\nthrough the handover metro area network.\n\nIn case of a `p2p_vc`, the `handover_metro_area_network` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n\nIn case of a `p2p_vc`, the `handover_metro_area` refers\nto the A-side of the point-to-point connection.\nThe A-side is the entity which initiates the network service creation.\n", "example": "met:29381993:NYC"}, "physical_port_speed": {"type": "integer", "description": "If the service is dependent on the speed of\nthe physical port this field denotes the speed.", "nullable": true, "minimum": 0}, "service_provider": {"type": "string", "description": "The name of the provider providing the service.\n", "example": "AWS"}, "downgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na lower bandwidth."}, "upgrade_allowed": {"type": "boolean", "description": "Indicates if the service can be migrated to\na higher bandwidth."}, "orderable_not_before": {"type": "string", "format": "date-time", "description": "This product offering becomes available for ordering after\nthis point in time.", "nullable": true}, "orderable_not_after": {"type": "string", "format": "date-time", "description": "This product offering will become unavailable for ordering after\nthis point in time.", "nullable": true}, "contract_terms": {"type": "string", "description": "This property informally describe the contract's notice- and\nrenewal periods as well as additional terms.\n\n**Note**: This property contains informal information about\nthe contract. For a structured representation see:\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\n**Example**: A contract with the terms\n_\"initially two weeks, renewing for six month afterwards, cancelable with a notice period of one month after and within 5 days during the initial period\"_\ncan be represented as:\n* `contract_initial_period: \"P2W\"`\n* `contract_initial_notice_period: \"P5D\"`\n* `contract_renewal_period: \"P6M\"`\n* `contract_renewal_notice_period: \"P1M\"`\n", "example": "first 30 days free", "nullable": true}, "contract_initial_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe initial duration of the contract. The contract will be\nrenewed after this period for the duration of `contract_renewal_period`.\n", "example": "P6M", "nullable": true}, "contract_initial_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period for canceling the contract within\nthe initial period.\n", "example": "P1M", "nullable": true}, "contract_renewal_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe duration for which the contract will be renewed after\nthe initial period.\n\nUnless the contract is canceled, it will be\nautomatically renewed after the period.\nCancellation has to be done within the\n`contract_renewal_notice_period`.\n", "example": "P3M"}, "contract_renewal_notice_period": {"type": "string", "description": "_**Format:** ISO8601 Duration_\n\nThe notice period denotes the time before the end of the\n`contract_renewal_period` in which the client has to inform\nthe IXP in order to prevent renewal of the contract.\n", "example": "P2W", "nullable": true}, "notice_period": {"type": "string", "description": "**DEPRECATION NOTICE**: This property will be replaced by\n`contract_initial_period`, `contract_initial_notice_period`,\n`contract_renewal_period` and `contract_renewal_notice_period`.\n\nThe notice period informally states constraints\nwhich define when the client needs to inform the\nIXP in order to prevent renewal of the contract.\n", "example": "at least 2 weeks before the end of every odd month", "nullable": true}, "bandwidth_min": {"type": "integer", "description": "The minimum bandwidth of the routing service in Mbit/s.", "minimum": 0}, "bandwidth_max": {"type": "integer", "description": "The maximum bandwidth of the routing service in Mbit/s.", "minimum": 0}}, "allOf": [{"$ref": "#/components/schemas/ProductOfferingPatch"}]}, "CloudConfig": {"title": "CloudConfig", "type": "object", "description": "The `CloudConfig` provides additional configuration for\ncreating the `NetworkServiceConfig` on the cloud provider\nside.\n\nThe `nsc_required_cloud_config_fields` and\n`nsc_supported_cloud_config_fields` attributes of the\n`ProductOffering` specifies which fields are required\nor can be optionally supplied.\n\nWhen creating the `NetworkServiceConfig` with a `l3_config`\nand a `routing_functions`, some required fields\nwill automatically be derived from the `l3_config`\nand can be ommitted.\n\nValues in the `cloud_config` will have precedence\nover the `l3_config`.", "properties": {"bgp_password": {"type": "string", "description": "The password to use for BGP sessions."}, "bgp_neighbor_address": {"type": "string", "description": "The IP address of the BGP neighbor."}, "bgp_neighbor_address_primary": {"type": "string", "description": "The primary IP address of the BGP neighbor."}, "bgp_neighbor_address_secondary": {"type": "string", "description": "The secondary IP address of the BGP neighbor."}, "bgp_neighbor_asn": {"type": "integer", "description": "The ASN of the BGP neighbor."}, "bgp_address_family": {"type": "string", "enum": ["ipv4", "ipv6"]}, "bfd": {"type": "boolean", "description": "Enable BFD for the BGP session."}, "local_asn": {"type": "integer", "description": "The local ASN."}, "local_address": {"type": "string", "description": "The IP address of the router function instance\nin CIDR notation."}, "local_address_primary": {"type": "string", "description": "The primary IP address of the router function instance\nin CIDR notation."}, "local_address_secondary": {"type": "string", "description": "The secondary IP address of the router function instance\nin CIDR notation."}, "vlan": {"type": "integer", "format": "int32", "description": "If the `provider_vlans` property of the `ProductOffering` is\n`multi`, a numeric value refers to a specific vlan on the service\nprovider side.\n\nThe `nsc_required_cloud_config_fields` attribute of the\n`ProductOffering` will include `vlan` if `provider_vlans` are\n`multi`.", "minimum": 1, "maximum": 4094}, "peering_type": {"type": "string", "description": "Some `cloud_vc` network services require selecting\na peering type.\n\nSee the `nsc_supported_cloud_config_peering_types` attribute of the corresponding\n`ProductOffering` for valid values."}}}, "CloudNetworkServiceConfig": {"title": "CloudNetworkServiceConfig", "type": "object", "description": "Cloud Network Service Config", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "network_service": {"type": "string", "description": "The id of the configured `NetworkService`.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Config`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "handover": {"type": "integer", "description": "The handover enumerates the connection and is\nrequired for checking diversity constraints.\n\nIt must be within `1 <= x <= network_service.diversity`.\n", "example": 1, "minimum": 1}, "cloud_config": {"$ref": "#/components/schemas/CloudConfig"}, "cloud_vlan": {"type": "integer", "format": "int32", "description": "**Deprecation Notice**: This field is deprecated and will\nbe removed in favor of using the `cloud_config.vlan` property.\nThe `ProductOffering` will include `vlan` in the\n`nsc_required_cloud_config_fields`, if `provider_vlans` are\n`multi`.\n\nIf the `provider_vlans` property of the `ProductOffering` is\n`multi`, a numeric value refers to a specific vlan on the service\nprovider side.\n\nOtherwise, if set to `null`, it refers to all unmatched\nvlan ids on the service provider side. (All vlan ids from the\nservice provider side are presented as tags within any vlans specified\nin `vlan_config`.)\n\nIf the `provider_vlans` property of the `ProductOffering` is `single`,\nthe `cloud_vlan` MUST be `null` or MUST NOT be provided.", "nullable": true, "minimum": 1, "maximum": 4094}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}], "required": ["type", "handover", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "network_service", "state"]}, "CloudNetworkServiceConfigPatch": {"title": "CloudNetworkServiceConfigPatch", "type": "object", "description": "Cloud Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Config Update`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "handover": {"type": "integer", "description": "The handover enumerates the connection and is\nrequired for checking diversity constraints.\n\nIt must be within `1 <= x <= network_service.diversity`.\n", "example": 1, "minimum": 1}, "cloud_config": {"$ref": "#/components/schemas/CloudConfig"}, "cloud_vlan": {"type": "integer", "format": "int32", "description": "**Deprecation Notice**: This field is deprecated and will\nbe removed in favor of using the `cloud_config.vlan` property.\nThe `ProductOffering` will include `vlan` in the\n`nsc_required_cloud_config_fields`, if `provider_vlans` are\n`multi`.\n\nIf the `provider_vlans` property of the `ProductOffering` is\n`multi`, a numeric value refers to a specific vlan on the service\nprovider side.\n\nOtherwise, if set to `null`, it refers to all unmatched\nvlan ids on the service provider side. (All vlan ids from the\nservice provider side are presented as tags within any vlans specified\nin `vlan_config`.)\n\nIf the `provider_vlans` property of the `ProductOffering` is `single`,\nthe `cloud_vlan` MUST be `null` or MUST NOT be provided.", "nullable": true, "minimum": 1, "maximum": 4094}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "CloudNetworkServiceConfigRequest": {"title": "CloudNetworkServiceConfigRequest", "type": "object", "description": "Cloud Network Service Config Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "network_service": {"type": "string", "description": "The id of the `NetworkService` to configure.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Config Request`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "handover": {"type": "integer", "description": "The handover enumerates the connection and is\nrequired for checking diversity constraints.\n\nIt must be within `1 <= x <= network_service.diversity`.\n", "example": 1, "minimum": 1}, "cloud_config": {"$ref": "#/components/schemas/CloudConfig"}, "cloud_vlan": {"type": "integer", "format": "int32", "description": "**Deprecation Notice**: This field is deprecated and will\nbe removed in favor of using the `cloud_config.vlan` property.\nThe `ProductOffering` will include `vlan` in the\n`nsc_required_cloud_config_fields`, if `provider_vlans` are\n`multi`.\n\nIf the `provider_vlans` property of the `ProductOffering` is\n`multi`, a numeric value refers to a specific vlan on the service\nprovider side.\n\nOtherwise, if set to `null`, it refers to all unmatched\nvlan ids on the service provider side. (All vlan ids from the\nservice provider side are presented as tags within any vlans specified\nin `vlan_config`.)\n\nIf the `provider_vlans` property of the `ProductOffering` is `single`,\nthe `cloud_vlan` MUST be `null` or MUST NOT be provided.", "nullable": true, "minimum": 1, "maximum": 4094}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}], "required": ["type", "handover", "id", "role_assignments", "billing_account", "network_service", "consuming_account", "managing_account"]}, "CloudNetworkServiceConfigUpdate": {"title": "CloudNetworkServiceConfigUpdate", "type": "object", "description": "Cloud Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Config Update`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "handover": {"type": "integer", "description": "The handover enumerates the connection and is\nrequired for checking diversity constraints.\n\nIt must be within `1 <= x <= network_service.diversity`.\n", "example": 1, "minimum": 1}, "cloud_config": {"$ref": "#/components/schemas/CloudConfig"}, "cloud_vlan": {"type": "integer", "format": "int32", "description": "**Deprecation Notice**: This field is deprecated and will\nbe removed in favor of using the `cloud_config.vlan` property.\nThe `ProductOffering` will include `vlan` in the\n`nsc_required_cloud_config_fields`, if `provider_vlans` are\n`multi`.\n\nIf the `provider_vlans` property of the `ProductOffering` is\n`multi`, a numeric value refers to a specific vlan on the service\nprovider side.\n\nOtherwise, if set to `null`, it refers to all unmatched\nvlan ids on the service provider side. (All vlan ids from the\nservice provider side are presented as tags within any vlans specified\nin `vlan_config`.)\n\nIf the `provider_vlans` property of the `ProductOffering` is `single`,\nthe `cloud_vlan` MUST be `null` or MUST NOT be provided.", "nullable": true, "minimum": 1, "maximum": 4094}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}], "required": ["type", "handover", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "Connection": {"title": "Connection", "type": "object", "description": "Connection", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Connection`.", "example": "Q29ubmVjdGlvbjo0Mg==", "readOnly": true}, "mode": {"type": "string", "enum": ["lag_lacp", "lag_static", "flex_ethernet", "standalone"], "description": "Sets the mode of the connection. The mode can be:\n\n- `lag_lacp`: connection is build as a LAG with LACP enabled\n- `lag_static`: connection is build as LAG with static configuration\n- `flex_ethernet`: connect is build as a FlexEthernet channel\n- `standalone`: only one port is allowed in this connection without\nany bundling.\n", "example": "lag_lacp"}, "lacp_timeout": {"type": "string", "enum": ["slow", "fast"], "description": "This sets the LACP Timeout mode. Both ends of the connections need\nto be configured the same.\n", "example": "slow", "nullable": true}, "product_offering": {"type": "string", "description": "The product offering must match the type `connection`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "name": {"type": "string", "maxLength": 80}, "ports": {"type": "array", "items": {"type": "string"}, "description": "References to the port belonging to this connection. Typically\nall ports within one connection are distributed over the same\ndevice.\n", "example": ["ID23", "42", "5"]}, "port_reservations": {"type": "array", "items": {"type": "string"}, "description": "A list of `port-reservations` for this connection.", "example": ["UG9ydDo0Mg=="]}, "pop": {"type": "string", "description": "The ID of the point of presence (see `/pops`), where\nthe physical port(s) are present.\n", "example": "pop:127388:LD3"}, "speed": {"type": "integer", "description": "Shows the total bandwidth of the connection in Mbit/s.\n", "example": 20000, "nullable": true, "minimum": 0}, "capacity_allocated": {"type": "integer", "description": "Sum of the bandwidth of all network services using\nthe connection in Mbit/s.", "minimum": 0}, "capacity_allocation_limit": {"type": "integer", "description": "Maximum allocatable capacity of the connection in Mbit/s.\nWhen `null`, the exchange does not impose any limit.\n", "example": 25000, "nullable": true}, "vlan_types": {"type": "array", "items": {"type": "string", "enum": ["port", "dot1q", "qinq"]}, "description": "A list of vlan config types you can configure using\nthis connection."}, "outer_vlan_ethertypes": {"type": "array", "items": {"type": "string", "enum": ["0x8100", "0x88a8", "0x9100"], "default": "0x8100"}, "description": "The ethertype of the outer tag in hexadecimal notation.\n", "example": ["0x8100"]}, "port_quantity": {"type": "integer", "description": "The number of ports which should be allocated\nfor this connection.", "minimum": 1}, "subscriber_side_demarcs": {"type": "array", "items": {"type": "string"}, "description": "The workflow for allocating ports is dependent on the\n`cross_connect_initiator` property of the\n`product_offering`:\n\n**Cross-Connect initiator: exchange**\n\nThe subscriber needs to provide a\nlist of demarc information.\n\n\nAt least one needs to be provided, but not more than\n`port_quantity`.\n\nThe content is interpreted by the exchange and may\ncontain a reference to a pre-existing cross connect order\nor information required for patching in a structured\nformat (e.g.\n`...`).\n\nPlease refer to the usage guide of the internet exchange.\n\n---\n\n**Cross-Connect initiator: subscriber**\n\nThis field can be omitted, when the cross connect\ninitiator is the `subscriber`."}, "metro_area": {"type": "string", "description": "Optional ID of the service metro area the connection\nis provided in.", "example": "TWV0cm9BcmVhOjQy"}, "metro_area_network": {"type": "string", "description": "Optional ID of the service metro area network the\nconnection is present on.", "example": "TWV0cm9BcmVhTmV0d29yazo0Mg=="}}, "required": ["port_quantity", "outer_vlan_ethertypes", "vlan_types", "capacity_allocation_limit", "capacity_allocated", "pop", "name", "product_offering", "mode", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "state"]}, "ConnectionPatch": {"title": "ConnectionPatch", "type": "object", "description": "Connection Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Connection Update`.", "example": "Q29ubmVjdGlvblBhdGNoOjQy", "readOnly": true}, "mode": {"type": "string", "enum": ["lag_lacp", "lag_static", "flex_ethernet", "standalone"], "description": "Sets the mode of the connection. The mode can be:\n\n- `lag_lacp`: connection is build as a LAG with LACP enabled\n- `lag_static`: connection is build as LAG with static configuration\n- `flex_ethernet`: connect is build as a FlexEthernet channel\n- `standalone`: only one port is allowed in this connection without\nany bundling.\n", "example": "lag_lacp"}, "lacp_timeout": {"type": "string", "enum": ["slow", "fast"], "description": "This sets the LACP Timeout mode. Both ends of the connections need\nto be configured the same.\n", "example": "slow", "nullable": true}, "product_offering": {"type": "string", "description": "The product offering must match the type `connection`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}}}, "ConnectionRequest": {"title": "ConnectionRequest", "type": "object", "description": "Request a new connection", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Request a new connection`.", "example": "Q29ubmVjdGlvblJlcXVlc3Q6NDI=", "readOnly": true}, "mode": {"type": "string", "enum": ["lag_lacp", "lag_static", "flex_ethernet", "standalone"], "description": "Sets the mode of the connection. The mode can be:\n\n- `lag_lacp`: connection is build as a LAG with LACP enabled\n- `lag_static`: connection is build as LAG with static configuration\n- `flex_ethernet`: connect is build as a FlexEthernet channel\n- `standalone`: only one port is allowed in this connection without\nany bundling.\n", "example": "lag_lacp"}, "lacp_timeout": {"type": "string", "enum": ["slow", "fast"], "description": "This sets the LACP Timeout mode. Both ends of the connections need\nto be configured the same.\n", "example": "slow", "nullable": true}, "product_offering": {"type": "string", "description": "The product offering must match the type `connection`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "port_quantity": {"type": "integer", "description": "The number of `PortReservation`s that will be\ncreated for this connection.", "minimum": 1}, "subscriber_side_demarcs": {"type": "array", "items": {"type": "string"}, "description": "The workflow for allocating ports is dependent on the\n`cross_connect_initiator` property of the\n`product_offering`:\n\n**Cross-Connect initiator: exchange**\n\nThe subscriber needs to provide a\nlist of demarc information.\n\nAt least one needs to be provided, but not more than\n`port_quantity`.\n\nThe content is interpreted by the exchange and may\ncontain a reference to a pre-existing cross connect order\nor information required for patching in a structured\nformat (e.g.\n`...`).\n\nPlease refer to the usage guide of the internet exchange.\n\n---\n\n**Cross-Connect initiator: subscriber**\n\nThis field can be omitted, when the cross connect\ninitiator is the `subscriber`."}, "connecting_party": {"type": "string", "description": "Name of the service provider who establishes\nconnectivity on your behalf.\n\nThis is only relevant, if the cross connect initiator\nis the `subscriber` and might be `null`.\n\nPlease refer to the usage guide of the internet exchange.", "nullable": true}}, "required": ["port_quantity", "product_offering", "mode", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "ConnectionUpdate": {"title": "ConnectionUpdate", "type": "object", "description": "Connection Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Connection Update`.", "example": "Q29ubmVjdGlvblVwZGF0ZTo0Mg==", "readOnly": true}, "mode": {"type": "string", "enum": ["lag_lacp", "lag_static", "flex_ethernet", "standalone"], "description": "Sets the mode of the connection. The mode can be:\n\n- `lag_lacp`: connection is build as a LAG with LACP enabled\n- `lag_static`: connection is build as LAG with static configuration\n- `flex_ethernet`: connect is build as a FlexEthernet channel\n- `standalone`: only one port is allowed in this connection without\nany bundling.\n", "example": "lag_lacp"}, "lacp_timeout": {"type": "string", "enum": ["slow", "fast"], "description": "This sets the LACP Timeout mode. Both ends of the connections need\nto be configured the same.\n", "example": "slow", "nullable": true}, "product_offering": {"type": "string", "description": "The product offering must match the type `connection`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}}, "required": ["product_offering", "mode", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "ExchangeLanNetworkServiceConfig": {"title": "ExchangeLanNetworkServiceConfig", "type": "object", "description": "Exchange Lan Network Service Config", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "network_service": {"type": "string", "description": "The id of the configured `NetworkService`.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Service Config`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of mac-address IDs.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.\n\nAvailability Zones may not be supported for exchange_lan because by\ndefault they span multiple networks.\n\nIf an availability zone is set then this refers to a circuit that\nis placed on a specific on-ramp to the exchange_lan.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}, "shared_statistics": {"$ref": "#/components/schemas/SharedStatisticsConfig"}, "product_offering": {"type": "string", "description": "The product offering must match the type `exchange_lan`\nand must refer to the related network service through\nthe `exchange_lan_network_service` property.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}], "required": ["type", "product_offering", "listed", "asns", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "network_service", "state"]}, "ExchangeLanNetworkServiceConfigPatch": {"title": "ExchangeLanNetworkServiceConfigPatch", "type": "object", "description": "Exchange Lan Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Service Config Update`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of mac-address IDs.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.\n\nAvailability Zones may not be supported for exchange_lan because by\ndefault they span multiple networks.\n\nIf an availability zone is set then this refers to a circuit that\nis placed on a specific on-ramp to the exchange_lan.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}, "shared_statistics": {"$ref": "#/components/schemas/SharedStatisticsConfig"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "ExchangeLanNetworkServiceConfigRequest": {"title": "ExchangeLanNetworkServiceConfigRequest", "type": "object", "description": "Exchange Lan Network Service Config Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "network_service": {"type": "string", "description": "The id of the `NetworkService` to configure.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Service Config Request`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of mac-address IDs.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.\n\nAvailability Zones may not be supported for exchange_lan because by\ndefault they span multiple networks.\n\nIf an availability zone is set then this refers to a circuit that\nis placed on a specific on-ramp to the exchange_lan.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}, "shared_statistics": {"$ref": "#/components/schemas/SharedStatisticsConfig"}, "product_offering": {"type": "string", "description": "The product offering must match the type `exchange_lan`\nand must refer to the related network service through\nthe `exchange_lan_network_service` property.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}], "required": ["type", "product_offering", "listed", "asns", "id", "role_assignments", "billing_account", "network_service", "consuming_account", "managing_account"]}, "ExchangeLanNetworkServiceConfigUpdate": {"title": "ExchangeLanNetworkServiceConfigUpdate", "type": "object", "description": "Exchange Lan Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Service Config Update`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of mac-address IDs.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "availability_zone": {"type": "string", "description": "The availability zone that shall be used on the provider side.\n\nAvailability Zones may not be supported for exchange_lan because by\ndefault they span multiple networks.\n\nIf an availability zone is set then this refers to a circuit that\nis placed on a specific on-ramp to the exchange_lan.", "example": "QXZhaWxhYmlsaXR5Wm9uZTo0Mg==", "nullable": true}, "shared_statistics": {"$ref": "#/components/schemas/SharedStatisticsConfig"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}], "required": ["type", "listed", "asns", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "IXPSpecificFeatureFlagConfig": {"title": "IXPSpecificFeatureFlagConfig", "type": "object", "description": "IXP-Specific Feature Flag Configuration", "properties": {"name": {"type": "string", "description": "The name of the feature flag.\n", "example": "RPKI-HARD-FILTER", "maxLength": 40}, "enabled": {"type": "boolean", "description": "Enable the feature.\n\n*Mandatory features can not be disabled*."}}, "required": ["enabled", "name"]}, "L3Config": {"title": "L3Config", "type": "object", "description": "The layer 3 configuration for the NetworkServiceConfig.\n\nIt is **required** when a `routing_function` is provided.\nIt may be required with a `connection`, depending on the\n`ProductOffering`.\n\nPlease check the `nsc_required_l3_config_fields` attribute\nof the corresponding `ProductOffering` to see which fields\nare required.\n\nFor additional optional fields, please check the\n`nsc_supported_l3_config_fields` attribute of the `ProductOffering`.", "properties": {"bgp_password": {"type": "string", "description": "The password to use for BGP sessions."}, "bgp_neighbor_address": {"type": "string", "description": "The IP address of the BGP neighbor."}, "bgp_neighbor_address_primary": {"type": "string", "description": "The primary IP address of the BGP neighbor."}, "bgp_neighbor_address_secondary": {"type": "string", "description": "The secondary IP address of the BGP neighbor."}, "bgp_neighbor_asn": {"type": "integer", "description": "The ASN of the BGP neighbor."}, "bgp_address_family": {"type": "string", "enum": ["ipv4", "ipv6"]}, "bfd": {"type": "boolean", "description": "Enable BFD for the BGP session."}, "local_asn": {"type": "integer", "description": "The local ASN."}, "local_address": {"type": "string", "description": "The IP address of the router function instance\nin CIDR notation."}, "local_address_primary": {"type": "string", "description": "The primary IP address of the router function instance\nin CIDR notation."}, "local_address_secondary": {"type": "string", "description": "The secondary IP address of the router function instance\nin CIDR notation."}}}, "MP2MPNetworkServiceConfig": {"title": "MP2MPNetworkServiceConfig", "type": "object", "description": "MP2MP Network Service Config", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "network_service": {"type": "string", "description": "The id of the configured `NetworkService`.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Config`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}], "required": ["type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "network_service", "state"]}, "MP2MPNetworkServiceConfigPatch": {"title": "MP2MPNetworkServiceConfigPatch", "type": "object", "description": "MP2MP Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Config Update`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "MP2MPNetworkServiceConfigRequest": {"title": "MP2MPNetworkServiceConfigRequest", "type": "object", "description": "MP2MP Network Service Config Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "network_service": {"type": "string", "description": "The id of the `NetworkService` to configure.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Config Request`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}], "required": ["type", "id", "role_assignments", "billing_account", "network_service", "consuming_account", "managing_account"]}, "MP2MPNetworkServiceConfigUpdate": {"title": "MP2MPNetworkServiceConfigUpdate", "type": "object", "description": "MP2MP Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Config Update`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation.", "example": ["TWFjQWRkcmVzczo0Mg=="]}, "ips": {"type": "array", "items": {"type": "string"}, "description": "A list of ip-address IDs.\n\nAllocation of IP Addresses might be deferred depending on\nthe IXP implementation. No assumption should be made.", "example": ["SXBBZGRyZXNzOjQy"], "readOnly": true}, "asns": {"type": "array", "items": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 4294967295}, "description": "A list of AS numbers.\n\nDepending on the implementation, these can be used for different\npurposes. For example in the members list on the website, links to\nthe looking glass or even generating IPv6 prefixes."}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}], "required": ["type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "NetworkFeatureConfig": {"title": "NetworkFeatureConfig", "description": "NetworkFeatureConfig", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfig"}}}, "NetworkFeatureConfigPatch": {"title": "NetworkFeatureConfigPatch", "description": "NetworkFeatureConfigPatch", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigPatch"}}}, "NetworkFeatureConfigRequest": {"title": "NetworkFeatureConfigRequest", "description": "NetworkFeatureConfigRequest", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigRequest"}}}, "NetworkFeatureConfigUpdate": {"title": "NetworkFeatureConfigUpdate", "description": "NetworkFeatureConfigUpdate", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigUpdate"}}}, "NetworkServiceConfig": {"title": "NetworkServiceConfig", "description": "NetworkServiceConfig", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfig", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfig", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfig", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfig", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfig"}}}, "NetworkServiceConfigPatch": {"title": "NetworkServiceConfigPatch", "description": "NetworkServiceConfigPatch", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigPatch", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigPatch", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigPatch", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigPatch", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigPatch"}}}, "NetworkServiceConfigRequest": {"title": "NetworkServiceConfigRequest", "description": "NetworkServiceConfigRequest", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigRequest", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigRequest", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigRequest", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigRequest", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigRequest"}}}, "NetworkServiceConfigUpdate": {"title": "NetworkServiceConfigUpdate", "description": "NetworkServiceConfigUpdate", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdate", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigUpdate", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigUpdate", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigUpdate", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigUpdate"}}}, "P2MPNetworkServiceConfig": {"title": "P2MPNetworkServiceConfig", "type": "object", "description": "P2MP Network Service Config", "properties": {"product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Config`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnOjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "role": {"type": "string", "enum": ["root", "leaf"], "description": "A `leaf` can only reach roots and is\nisolated from other leafs. A `root` can\nreach any other point in the virtual circuit\nincluding other roots.", "default": "leaf"}, "state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "network_service": {"type": "string", "description": "The id of the configured `NetworkService`.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}], "required": ["type", "network_service", "state", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "P2MPNetworkServiceConfigPatch": {"title": "P2MPNetworkServiceConfigPatch", "type": "object", "description": "P2MP Network Service Config Update", "properties": {"product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Config Update`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUGF0Y2g6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "role": {"type": "string", "enum": ["root", "leaf"], "description": "A `leaf` can only reach roots and is\nisolated from other leafs. A `root` can\nreach any other point in the virtual circuit\nincluding other roots.", "default": "leaf"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "P2MPNetworkServiceConfigRequest": {"title": "P2MPNetworkServiceConfigRequest", "type": "object", "description": "P2MP Network Service Config Request", "properties": {"product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Config Request`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUmVxdWVzdDo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "role": {"type": "string", "enum": ["root", "leaf"], "description": "A `leaf` can only reach roots and is\nisolated from other leafs. A `root` can\nreach any other point in the virtual circuit\nincluding other roots.", "default": "leaf"}, "network_service": {"type": "string", "description": "The id of the `NetworkService` to configure.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}], "required": ["type", "network_service", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "P2MPNetworkServiceConfigUpdate": {"title": "P2MPNetworkServiceConfigUpdate", "type": "object", "description": "P2MP Network Service Config Update", "properties": {"product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Config Update`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnVXBkYXRlOjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "role": {"type": "string", "enum": ["root", "leaf"], "description": "A `leaf` can only reach roots and is\nisolated from other leafs. A `root` can\nreach any other point in the virtual circuit\nincluding other roots.", "default": "leaf"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}], "required": ["type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "P2PNetworkServiceConfig": {"title": "P2PNetworkServiceConfig", "type": "object", "description": "P2P Network Service Config", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "network_service": {"type": "string", "description": "The id of the configured `NetworkService`.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Config`.", "example": "UDJQTmV0d29ya1NlcnZpY2VDb25maWc6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}], "required": ["type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "network_service", "state"]}, "P2PNetworkServiceConfigPatch": {"title": "P2PNetworkServiceConfigPatch", "type": "object", "description": "P2P Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Config Update`.", "example": "UDJQTmV0d29ya1NlcnZpY2VDb25maWdQYXRjaDo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "P2PNetworkServiceConfigRequest": {"title": "P2PNetworkServiceConfigRequest", "type": "object", "description": "P2P Network Service Config Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "network_service": {"type": "string", "description": "The id of the `NetworkService` to configure.", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Config Request`.", "example": "UDJQTmV0d29ya1NlcnZpY2VDb25maWdSZXF1ZXN0OjQy", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}], "required": ["type", "id", "role_assignments", "billing_account", "network_service", "consuming_account", "managing_account"]}, "P2PNetworkServiceConfigUpdate": {"title": "P2PNetworkServiceConfigUpdate", "type": "object", "description": "P2P Network Service Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Config Update`.", "example": "UDJQTmV0d29ya1NlcnZpY2VDb25maWdVcGRhdGU6NDI=", "readOnly": true}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`.\n\nIf no connection is specified, you have to provide\na routing function.\n\nWhen a connection is provided, you also need to specify\nthe `vlan_config`. The `routing_function` attribute\nmay not be used. Some network services may require the\nuse of the `l3_config`, please check the\n`nsc_required_l3_config_fields` attribute of the\n`ProductOffering`.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "routing_function": {"type": "string", "description": "The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.\n\nIf no routing function is provided, you need to provide\nthe connection to use.\n\nWhen a routing function is provided, you also need to\nspecify the `l3_config`. The `connection` attribute\nmay not be used.\n\nConnections ans Routing Functions are mutually exclusive.", "example": "Um91dGluZ0Z1bmN0aW9uOjQy"}, "l3_config": {"$ref": "#/components/schemas/L3Config"}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. If set to Null,\nthe maximum capacity will be used, i.e. the virtual circuit is\nnot rate-limited.\n\nAn exchange may choose to constrain the available capacity range\nof a `ProductOffering`.\n\nThat means, the service can consume up to the total bandwidth\nof the `Connection`.\n\nTypically the service is charged based on the capacity.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}], "required": ["type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account"]}, "Port": {"title": "Port", "type": "object", "description": "Port", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Port`.", "example": "UG9ydDo0Mg==", "readOnly": true}, "connection": {"type": "string", "description": "The `id` of the related `Connection`.\n\n", "example": "Q29ubmVjdGlvbjo0Mg==", "nullable": true}, "speed": {"type": "integer", "readOnly": true, "nullable": true, "minimum": 0}, "name": {"type": "string", "description": "Name of the port (set by the exchange)", "default": "", "readOnly": true, "maxLength": 80}, "media_type": {"type": "string", "description": "The media type of the port.\nQuery the device's capabilities for available types.\n", "example": "10GBASE-LR", "maxLength": 20}, "operational_state": {"type": "string", "enum": ["up", "down", "error"], "description": "The operational state of the port."}, "device": {"type": "string", "description": "The device the port.\n", "example": "device:29139871"}, "pop": {"type": "string", "description": "Same as the `pop` of the `device`.\n", "example": "pop:2913"}}, "required": ["pop", "device", "media_type", "id", "role_assignments", "billing_account", "consuming_account", "managing_account", "state"]}, "PortReservation": {"title": "PortReservation", "type": "object", "description": "A PortReservation", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `A PortReservation`.", "example": "UG9ydFJlc2VydmF0aW9uOjQy", "readOnly": true}, "subscriber_side_demarc": {"type": "string", "description": "In an exchange initiated scenario, this field will\nindicated one of the provided `subscriber_side_demarcs`\nfrom the connection."}, "connecting_party": {"type": "string", "description": "Name of the service provider who establishes\nconnectivity on your behalf.\n\nThis is only relevant, if the cross connect initiator\nis the `subscriber`.\n\nPlease refer to the usage guide of the internet exchange.", "nullable": true}, "cross_connect_id": {"type": "string", "description": "An optional identifier of a cross connect."}, "connection": {"type": "string", "description": "The `Port` will become part of this connection.", "example": "Q29ubmVjdGlvbjo0Mg=="}, "exchange_side_demarc": {"type": "string", "description": "Exchange side demarc information. This field will only\nbe filled in when the port state is `allocated` or\nin `production`.\n\nOtherwise this field will be `null`.", "nullable": true}, "port": {"type": "string", "description": "This field will be null, until a port will\nbe allocated.", "example": "UG9ydDo0Mg==", "nullable": true}}, "required": ["connection", "id", "state"]}, "PortReservationPatch": {"title": "PortReservationPatch", "type": "object", "description": "PortReservation Update", "properties": {"purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `PortReservation Update`.", "example": "UG9ydFJlc2VydmF0aW9uUGF0Y2g6NDI=", "readOnly": true}, "subscriber_side_demarc": {"type": "string", "description": "In an exchange initiated scenario, this field will\nindicated one of the provided `subscriber_side_demarcs`\nfrom the connection."}, "connecting_party": {"type": "string", "description": "Name of the service provider who establishes\nconnectivity on your behalf.\n\nThis is only relevant, if the cross connect initiator\nis the `subscriber`.\n\nPlease refer to the usage guide of the internet exchange.", "nullable": true}, "cross_connect_id": {"type": "string", "description": "An optional identifier of a cross connect."}}}, "PortReservationRequest": {"title": "PortReservationRequest", "type": "object", "description": "A PortReservation", "properties": {"purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `A PortReservation`.", "example": "UG9ydFJlc2VydmF0aW9uUmVxdWVzdDo0Mg==", "readOnly": true}, "subscriber_side_demarc": {"type": "string", "description": "In an exchange initiated scenario, this field will\nindicated one of the provided `subscriber_side_demarcs`\nfrom the connection."}, "connecting_party": {"type": "string", "description": "Name of the service provider who establishes\nconnectivity on your behalf.\n\nThis is only relevant, if the cross connect initiator\nis the `subscriber`.\n\nPlease refer to the usage guide of the internet exchange.", "nullable": true}, "cross_connect_id": {"type": "string", "description": "An optional identifier of a cross connect."}, "connection": {"type": "string", "description": "A connection is required for port allocation.", "example": "Q29ubmVjdGlvbjo0Mg=="}}, "required": ["connection", "id"]}, "PortReservationUpdate": {"title": "PortReservationUpdate", "type": "object", "description": "PortReservation Update", "properties": {"purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `PortReservation Update`.", "example": "UG9ydFJlc2VydmF0aW9uVXBkYXRlOjQy", "readOnly": true}, "subscriber_side_demarc": {"type": "string", "description": "In an exchange initiated scenario, this field will\nindicated one of the provided `subscriber_side_demarcs`\nfrom the connection."}, "connecting_party": {"type": "string", "description": "Name of the service provider who establishes\nconnectivity on your behalf.\n\nThis is only relevant, if the cross connect initiator\nis the `subscriber`.\n\nPlease refer to the usage guide of the internet exchange.", "nullable": true}, "cross_connect_id": {"type": "string", "description": "An optional identifier of a cross connect."}}, "required": ["id"]}, "RouteServerNetworkFeatureConfig": {"title": "RouteServerNetworkFeatureConfig", "type": "object", "description": "Route Server Network Feature Config", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Route Server Network Feature Config`.", "example": "Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZzo0Mg==", "readOnly": true}, "network_feature": {"type": "string", "description": "The `id` of the related `NetworkFeature`.\n\n", "example": "TmV0d29ya0ZlYXR1cmU6NDI="}, "network_service_config": {"type": "string", "description": "The `id` of the related `NetworkServiceConfig`.\n\n", "example": "TmV0d29ya1NlcnZpY2VDb25maWc6NDI="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "asn": {"type": "integer", "format": "int64", "description": "The ASN of the peer.\n", "example": 4200000023, "minimum": 0, "maximum": 4294967295}, "password": {"type": "string", "description": "The cleartext BGP session password", "default": "", "example": "bgp-session-test-23", "maxLength": 128}, "as_set_v4": {"type": "string", "description": "AS-SET of the customer for IPv4 prefix filtering.\nThis is used to generate filters on the router servers.\n\nOnly valid referenced prefixes within the AS-SET\nare allowed inbound to the route server. All other routes are\nfiltered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v6` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "as_set_v6": {"type": "string", "description": "AS-SET of the customer for IPv6. This is used to generate filters\non the router servers. Only valid referenced prefixes within\nthe AS-SET are allowed inbound to the route server.\nAll other routes are filtered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet6` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v4` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "max_prefix_v4": {"type": "integer", "description": "Announcing more than `max_prefix` IPv4 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "max_prefix_v6": {"type": "integer", "description": "Announcing more than `max_prefix` IPv6 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "insert_ixp_asn": {"type": "boolean", "description": "Insert the ASN of the exchange into the AS path. This function is only\nused in special cases. In 99% of all cases, it should be false.\n", "default": true}, "session_mode": {"type": "string", "enum": ["public", "collector"], "description": "Set the session mode with the routeserver.\n", "example": "public"}, "bgp_session_type": {"type": "string", "enum": ["active", "passive"], "description": "The session type describes which of the both parties will open the\nconnection. If set to passive, the customer router needs to open\nthe connection. If its set to active, the route server will open\nthe connection. The standard behavior on most exchanges is passive.\n", "example": "passive"}, "ip": {"type": "string", "description": "The BGP session will be established from this IP address,\nreferenced by ID.\n\nOnly IDs of IPs assigned to the corresponding network service\nconfig can be used.", "example": "SXBBZGRyZXNzOjQy"}, "flags": {"type": "array", "items": {"$ref": "#/components/schemas/IXPSpecificFeatureFlagConfig"}, "description": "A list of IXP specific feature flag configs. This can be used\nto enable or disable a specific feature flag."}}, "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfig"}], "required": ["type", "ip", "bgp_session_type", "session_mode", "asn", "role_assignments", "network_service_config", "network_feature", "id", "billing_account", "consuming_account", "managing_account", "state"]}, "RouteServerNetworkFeatureConfigPatch": {"title": "RouteServerNetworkFeatureConfigPatch", "type": "object", "description": "Route Server Network Feature Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "asn": {"type": "integer", "format": "int64", "description": "The ASN of the peer.\n", "example": 4200000023, "minimum": 0, "maximum": 4294967295}, "password": {"type": "string", "description": "The cleartext BGP session password", "default": "", "example": "bgp-session-test-23", "maxLength": 128}, "as_set_v4": {"type": "string", "description": "AS-SET of the customer for IPv4 prefix filtering.\nThis is used to generate filters on the router servers.\n\nOnly valid referenced prefixes within the AS-SET\nare allowed inbound to the route server. All other routes are\nfiltered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v6` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "as_set_v6": {"type": "string", "description": "AS-SET of the customer for IPv6. This is used to generate filters\non the router servers. Only valid referenced prefixes within\nthe AS-SET are allowed inbound to the route server.\nAll other routes are filtered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet6` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v4` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "max_prefix_v4": {"type": "integer", "description": "Announcing more than `max_prefix` IPv4 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "max_prefix_v6": {"type": "integer", "description": "Announcing more than `max_prefix` IPv6 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "insert_ixp_asn": {"type": "boolean", "description": "Insert the ASN of the exchange into the AS path. This function is only\nused in special cases. In 99% of all cases, it should be false.\n", "default": true}, "session_mode": {"type": "string", "enum": ["public", "collector"], "description": "Set the session mode with the routeserver.\n", "example": "public"}, "bgp_session_type": {"type": "string", "enum": ["active", "passive"], "description": "The session type describes which of the both parties will open the\nconnection. If set to passive, the customer router needs to open\nthe connection. If its set to active, the route server will open\nthe connection. The standard behavior on most exchanges is passive.\n", "example": "passive"}, "ip": {"type": "string", "description": "The BGP session will be established from this IP address,\nreferenced by ID.\n\nOnly IDs of IPs assigned to the corresponding network service\nconfig can be used.", "example": "SXBBZGRyZXNzOjQy"}}, "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigPatch"}]}, "RouteServerNetworkFeatureConfigRequest": {"title": "RouteServerNetworkFeatureConfigRequest", "type": "object", "description": "Route Server Network Feature Config Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Route Server Network Feature Config Request`.", "example": "Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZ1JlcXVlc3Q6NDI=", "readOnly": true}, "network_feature": {"type": "string", "description": "The `id` of the related `NetworkFeature`.\n\n", "example": "TmV0d29ya0ZlYXR1cmU6NDI="}, "network_service_config": {"type": "string", "description": "The `id` of the related `NetworkServiceConfig`.\n\n", "example": "TmV0d29ya1NlcnZpY2VDb25maWc6NDI="}, "role_assignments": {"type": "array", "items": {"type": "string"}, "description": "A set of `RoleAssignment`s. See the documentation\non the specific `required_contact_roles`,\n`nfc_required_contact_roles` or `nsc_required_contact_roles`\non what `RoleAssignment`s to provide.\n\nPlease note, that any contact role can additionally be provided.\nThe presence of at least one of each required contact roles\nis necessary.\n", "example": ["c-impl:123", "c-noc:331"]}, "asn": {"type": "integer", "format": "int64", "description": "The ASN of the peer.\n", "example": 4200000023, "minimum": 0, "maximum": 4294967295}, "password": {"type": "string", "description": "The cleartext BGP session password", "default": "", "example": "bgp-session-test-23", "maxLength": 128}, "as_set_v4": {"type": "string", "description": "AS-SET of the customer for IPv4 prefix filtering.\nThis is used to generate filters on the router servers.\n\nOnly valid referenced prefixes within the AS-SET\nare allowed inbound to the route server. All other routes are\nfiltered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v6` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "as_set_v6": {"type": "string", "description": "AS-SET of the customer for IPv6. This is used to generate filters\non the router servers. Only valid referenced prefixes within\nthe AS-SET are allowed inbound to the route server.\nAll other routes are filtered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet6` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v4` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "max_prefix_v4": {"type": "integer", "description": "Announcing more than `max_prefix` IPv4 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "max_prefix_v6": {"type": "integer", "description": "Announcing more than `max_prefix` IPv6 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "insert_ixp_asn": {"type": "boolean", "description": "Insert the ASN of the exchange into the AS path. This function is only\nused in special cases. In 99% of all cases, it should be false.\n", "default": true}, "session_mode": {"type": "string", "enum": ["public", "collector"], "description": "Set the session mode with the routeserver.\n", "example": "public"}, "bgp_session_type": {"type": "string", "enum": ["active", "passive"], "description": "The session type describes which of the both parties will open the\nconnection. If set to passive, the customer router needs to open\nthe connection. If its set to active, the route server will open\nthe connection. The standard behavior on most exchanges is passive.\n", "example": "passive"}, "ip": {"type": "string", "description": "The BGP session will be established from this IP address,\nreferenced by ID.\n\nOnly IDs of IPs assigned to the corresponding network service\nconfig can be used.", "example": "SXBBZGRyZXNzOjQy"}, "flags": {"type": "array", "items": {"$ref": "#/components/schemas/IXPSpecificFeatureFlagConfig"}, "description": "A list of IXP specific feature flag configs. This can be used\nto enable or disable a specific feature flag."}}, "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigRequest"}], "required": ["type", "ip", "bgp_session_type", "session_mode", "asn", "role_assignments", "network_service_config", "network_feature", "id", "billing_account", "consuming_account", "managing_account"]}, "RouteServerNetworkFeatureConfigUpdate": {"title": "RouteServerNetworkFeatureConfigUpdate", "type": "object", "description": "Route Server Network Feature Config Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "asn": {"type": "integer", "format": "int64", "description": "The ASN of the peer.\n", "example": 4200000023, "minimum": 0, "maximum": 4294967295}, "password": {"type": "string", "description": "The cleartext BGP session password", "default": "", "example": "bgp-session-test-23", "maxLength": 128}, "as_set_v4": {"type": "string", "description": "AS-SET of the customer for IPv4 prefix filtering.\nThis is used to generate filters on the router servers.\n\nOnly valid referenced prefixes within the AS-SET\nare allowed inbound to the route server. All other routes are\nfiltered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v6` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "as_set_v6": {"type": "string", "description": "AS-SET of the customer for IPv6. This is used to generate filters\non the router servers. Only valid referenced prefixes within\nthe AS-SET are allowed inbound to the route server.\nAll other routes are filtered.\n\nThis field is *required* if the route server network feature only\nsupports the `af_inet6` address family.\nIf multiple address families are supported, it is optional if the\n`as_set_v4` is provided.\n\nImportant: The format has to be: \"AS-SET@IRR\". IRR is the database\nwhere the AS-SET is registred. Typically used IRR's are RADB, RIPE,\nNTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC\n", "example": "MOON-AS@RIPE", "nullable": true, "maxLength": 100}, "max_prefix_v4": {"type": "integer", "description": "Announcing more than `max_prefix` IPv4 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "max_prefix_v6": {"type": "integer", "description": "Announcing more than `max_prefix` IPv6 prefixes the bgp\nsession will be droped.\n", "example": 5000, "nullable": true, "minimum": 0}, "insert_ixp_asn": {"type": "boolean", "description": "Insert the ASN of the exchange into the AS path. This function is only\nused in special cases. In 99% of all cases, it should be false.\n", "default": true}, "session_mode": {"type": "string", "enum": ["public", "collector"], "description": "Set the session mode with the routeserver.\n", "example": "public"}, "bgp_session_type": {"type": "string", "enum": ["active", "passive"], "description": "The session type describes which of the both parties will open the\nconnection. If set to passive, the customer router needs to open\nthe connection. If its set to active, the route server will open\nthe connection. The standard behavior on most exchanges is passive.\n", "example": "passive"}, "ip": {"type": "string", "description": "The BGP session will be established from this IP address,\nreferenced by ID.\n\nOnly IDs of IPs assigned to the corresponding network service\nconfig can be used.", "example": "SXBBZGRyZXNzOjQy"}}, "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigUpdate"}], "required": ["type", "ip", "bgp_session_type", "session_mode", "asn", "consuming_account", "managing_account"]}, "SharedStatisticsConfig": {"title": "SharedStatisticsConfig", "type": "object", "description": "Configure sharing of sensitive statistics with\nother members of the exchange.\n\nProvide a list of account IDs of members who should\nbe able to access certain statistics.", "properties": {"nsc_available_capacity": {"type": "array", "items": {"type": "string"}, "description": "A list of acccont IDs who can see\n`nsc_available_capacity` and `nsc_available_capacity_change_perc`\non the `NetworkServiceConfig` statistics.\n", "example": ["238189294", "2978418"]}}, "required": ["nsc_available_capacity"]}, "VLanConfigDot1Q": {"title": "VLanConfigDot1Q", "type": "object", "description": "A Dot1Q vlan configuration", "properties": {"vlan": {"type": "integer", "format": "int32", "description": "A VLAN tag. If `null`, the IXP will auto-select\na valid vlan-id.\n", "example": 23, "nullable": true, "minimum": 1, "maximum": 4094}, "vlan_ethertype": {"type": "string", "enum": ["0x8100", "0x88a8", "0x9100"], "description": "The ethertype of the vlan in hexadecimal notation.", "default": "0x8100"}}, "allOf": [{"$ref": "#/components/schemas/VlanConfig"}], "required": ["vlan_type"]}, "VLanConfigPort": {"title": "VLanConfigPort", "type": "object", "description": "A Port vlan configuration", "properties": {}, "allOf": [{"$ref": "#/components/schemas/VlanConfig"}], "required": ["vlan_type"]}, "VLanConfigQinQ": {"title": "VLanConfigQinQ", "type": "object", "description": "A QinQ vlan configuration", "properties": {"outer_vlan": {"type": "integer", "format": "int32", "description": "The outer VLAN id.\nIf `null`, the IXP will auto-select\na valid vlan-id.\n", "example": 200, "nullable": true, "minimum": 1, "maximum": 4094}, "outer_vlan_ethertype": {"type": "string", "enum": ["0x8100", "0x88a8", "0x9100"], "description": "The ethertype of the outer tag in hexadecimal notation.", "default": "0x8100"}, "inner_vlan": {"type": "integer", "format": "int32", "description": "The inner VLAN id.\n", "example": 200, "minimum": 1, "maximum": 4094}}, "allOf": [{"$ref": "#/components/schemas/VlanConfig"}], "required": ["vlan_type", "inner_vlan"]}, "VlanConfig": {"title": "VlanConfig", "description": "VlanConfig", "type": "object", "properties": {"vlan_type": {"type": "string"}}, "required": ["vlan_type"], "discriminator": {"propertyName": "vlan_type", "mapping": {"dot1q": "#/components/schemas/VLanConfigDot1Q", "qinq": "#/components/schemas/VLanConfigQinQ", "port": "#/components/schemas/VLanConfigPort"}}}, "Account": {"title": "Account", "type": "object", "description": "Account", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "id": {"type": "string", "description": "The *primary identifier* of the `Account`.", "example": "QWNjb3VudDo0Mg==", "readOnly": true}, "managing_account": {"type": "string", "description": "The `id` of a managing account. Can be used for creating\na customer hierachy. *(Sensitive Property)*\n", "example": "IX:Account:231", "nullable": true}, "name": {"type": "string", "description": "Name of the account, how it gets represented\nin e.g. a \"customers list\".\n", "example": "Moonpeer Inc.", "maxLength": 80}, "legal_name": {"type": "string", "description": "Legal name of the organisation.\nOnly required when it's different from the account name.\n*(Sensitive Property)*\n", "example": "Moon Network Services LLS.", "nullable": true, "maxLength": 80}, "billing_information": {"$ref": "#/components/schemas/BillingInformation"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*", "example": "IX:Service:23042", "nullable": true, "maxLength": 80}, "discoverable": {"type": "boolean", "description": "The account will be included for all members of the\nix in the list of accounts.\n\nOnly `id`, `name` and `present_in_metro_area_networks`\nare provided to other members.", "default": false}, "metro_area_network_presence": {"type": "array", "items": {"type": "string"}, "description": "Informal list of `MetroAreaNetwork` ids, indicating the\npresence to other accounts.\nThe list is maintained by the account and can be empty.\n", "example": ["14021", "12939"]}, "address": {"$ref": "#/components/schemas/Address"}}, "required": ["metro_area_network_presence", "name", "id"]}, "AccountPatch": {"title": "AccountPatch", "type": "object", "description": "Account Update", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Account Update`.", "example": "QWNjb3VudFBhdGNoOjQy", "readOnly": true}, "managing_account": {"type": "string", "description": "The `id` of a managing account. Can be used for creating\na customer hierachy. *(Sensitive Property)*\n", "example": "IX:Account:231", "nullable": true}, "name": {"type": "string", "description": "Name of the account, how it gets represented\nin e.g. a \"customers list\".\n", "example": "Moonpeer Inc.", "maxLength": 80}, "legal_name": {"type": "string", "description": "Legal name of the organisation.\nOnly required when it's different from the account name.\n*(Sensitive Property)*\n", "example": "Moon Network Services LLS.", "nullable": true, "maxLength": 80}, "billing_information": {"$ref": "#/components/schemas/BillingInformation"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*", "example": "IX:Service:23042", "nullable": true, "maxLength": 80}, "discoverable": {"type": "boolean", "description": "The account will be included for all members of the\nix in the list of accounts.\n\nOnly `id`, `name` and `present_in_metro_area_networks`\nare provided to other members.", "default": false}, "metro_area_network_presence": {"type": "array", "items": {"type": "string"}, "description": "Informal list of `MetroAreaNetwork` ids, indicating the\npresence to other accounts.\nThe list is maintained by the account and can be empty.\n", "example": ["14021", "12939"]}, "address": {"$ref": "#/components/schemas/Address"}}}, "AccountRequest": {"title": "AccountRequest", "type": "object", "description": "Account Request", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Account Request`.", "example": "QWNjb3VudFJlcXVlc3Q6NDI=", "readOnly": true}, "managing_account": {"type": "string", "description": "The `id` of a managing account. Can be used for creating\na customer hierachy. *(Sensitive Property)*\n", "example": "IX:Account:231", "nullable": true}, "name": {"type": "string", "description": "Name of the account, how it gets represented\nin e.g. a \"customers list\".\n", "example": "Moonpeer Inc.", "maxLength": 80}, "legal_name": {"type": "string", "description": "Legal name of the organisation.\nOnly required when it's different from the account name.\n*(Sensitive Property)*\n", "example": "Moon Network Services LLS.", "nullable": true, "maxLength": 80}, "billing_information": {"$ref": "#/components/schemas/BillingInformation"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*", "example": "IX:Service:23042", "nullable": true, "maxLength": 80}, "discoverable": {"type": "boolean", "description": "The account will be included for all members of the\nix in the list of accounts.\n\nOnly `id`, `name` and `present_in_metro_area_networks`\nare provided to other members.", "default": false}, "metro_area_network_presence": {"type": "array", "items": {"type": "string"}, "description": "Informal list of `MetroAreaNetwork` ids, indicating the\npresence to other accounts.\nThe list is maintained by the account and can be empty.\n", "example": ["14021", "12939"], "default": []}, "address": {"$ref": "#/components/schemas/Address"}}, "required": ["address", "name", "id"]}, "AccountUpdate": {"title": "AccountUpdate", "type": "object", "description": "Account Update", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Account Update`.", "example": "QWNjb3VudFVwZGF0ZTo0Mg==", "readOnly": true}, "managing_account": {"type": "string", "description": "The `id` of a managing account. Can be used for creating\na customer hierachy. *(Sensitive Property)*\n", "example": "IX:Account:231", "nullable": true}, "name": {"type": "string", "description": "Name of the account, how it gets represented\nin e.g. a \"customers list\".\n", "example": "Moonpeer Inc.", "maxLength": 80}, "legal_name": {"type": "string", "description": "Legal name of the organisation.\nOnly required when it's different from the account name.\n*(Sensitive Property)*\n", "example": "Moon Network Services LLS.", "nullable": true, "maxLength": 80}, "billing_information": {"$ref": "#/components/schemas/BillingInformation"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*", "example": "IX:Service:23042", "nullable": true, "maxLength": 80}, "discoverable": {"type": "boolean", "description": "The account will be included for all members of the\nix in the list of accounts.\n\nOnly `id`, `name` and `present_in_metro_area_networks`\nare provided to other members.", "default": false}, "metro_area_network_presence": {"type": "array", "items": {"type": "string"}, "description": "Informal list of `MetroAreaNetwork` ids, indicating the\npresence to other accounts.\nThe list is maintained by the account and can be empty.\n", "example": ["14021", "12939"]}, "address": {"$ref": "#/components/schemas/Address"}}, "required": ["address", "metro_area_network_presence", "name", "id"]}, "Address": {"title": "Address", "type": "object", "description": "A postal address. *(Sensitive Property)*", "properties": {"country": {"type": "string", "description": "ISO 3166-1 alpha-2 country code, for example DE", "example": "US", "maxLength": 2}, "locality": {"type": "string", "description": "The locality/city. For example, Mountain View.", "example": "Mountain View", "maxLength": 40}, "region": {"type": "string", "description": "The region. For example, CA", "example": "CA", "nullable": true, "maxLength": 80}, "postal_code": {"type": "string", "description": "A postal code. For example, 9404", "example": "9409", "maxLength": 24}, "street_address": {"type": "string", "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "example": "1600 Amphitheatre Pkwy.", "maxLength": 80}, "post_office_box_number": {"type": "string", "description": "The post office box number for PO box addresses.", "example": "2335232", "nullable": true, "maxLength": 80}}, "required": ["street_address", "postal_code", "locality", "country"]}, "BillingInformation": {"title": "BillingInformation", "type": "object", "description": "Optional information required for issuing invoices.\nOnly accounts with `billing_information` present can be used\nas a `billing_account`. *(Sensitive Property)*", "properties": {"name": {"type": "string", "description": "Name of the organisation receiving invoices.\n", "example": "Moonoc Network Services LLS.", "maxLength": 80}, "address": {"$ref": "#/components/schemas/Address"}, "vat_number": {"type": "string", "description": "Value-added tax number, required for\neuropean reverse charge system.\n", "example": "UK2300000042", "nullable": true, "minLength": 2, "maxLength": 20}}, "required": ["address", "name"]}, "Contact": {"title": "Contact", "type": "object", "description": "Contact", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `Contact`.", "example": "Q29udGFjdDo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "A name of a person or an organisation", "example": "Some A. Name", "nullable": true, "maxLength": 128}, "telephone": {"type": "string", "description": "The telephone number in E.164 Phone Number Formatting", "example": "+442071838750", "nullable": true, "maxLength": 40}, "email": {"type": "string", "description": "The email of the legal company entity.\n", "example": "info@moon-peer.net", "nullable": true, "maxLength": 80}}, "required": ["id", "consuming_account", "managing_account"]}, "ContactPatch": {"title": "ContactPatch", "type": "object", "description": "Contact Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `Contact Update`.", "example": "Q29udGFjdFBhdGNoOjQy", "readOnly": true}, "name": {"type": "string", "description": "A name of a person or an organisation", "example": "Some A. Name", "nullable": true, "maxLength": 128}, "telephone": {"type": "string", "description": "The telephone number in E.164 Phone Number Formatting", "example": "+442071838750", "nullable": true, "maxLength": 40}, "email": {"type": "string", "description": "The email of the legal company entity.\n", "example": "info@moon-peer.net", "nullable": true, "maxLength": 80}}}, "ContactRequest": {"title": "ContactRequest", "type": "object", "description": "Contact Create Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `Contact Create Request`.", "example": "Q29udGFjdFJlcXVlc3Q6NDI=", "readOnly": true}, "name": {"type": "string", "description": "A name of a person or an organisation", "example": "Some A. Name", "nullable": true, "maxLength": 128}, "telephone": {"type": "string", "description": "The telephone number in E.164 Phone Number Formatting", "example": "+442071838750", "nullable": true, "maxLength": 40}, "email": {"type": "string", "description": "The email of the legal company entity.\n", "example": "info@moon-peer.net", "nullable": true, "maxLength": 80}}, "required": ["id", "consuming_account", "managing_account"]}, "ContactUpdate": {"title": "ContactUpdate", "type": "object", "description": "Contact Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `Contact Update`.", "example": "Q29udGFjdFVwZGF0ZTo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "A name of a person or an organisation", "example": "Some A. Name", "nullable": true, "maxLength": 128}, "telephone": {"type": "string", "description": "The telephone number in E.164 Phone Number Formatting", "example": "+442071838750", "nullable": true, "maxLength": 40}, "email": {"type": "string", "description": "The email of the legal company entity.\n", "example": "info@moon-peer.net", "nullable": true, "maxLength": 80}}, "required": ["id", "consuming_account", "managing_account"]}, "Role": {"title": "Role", "type": "object", "description": "Role for a Contact", "properties": {"name": {"type": "string", "description": "The name of the role.\n", "example": "noc", "maxLength": 80}, "required_fields": {"type": "array", "items": {"type": "string", "maxLength": 80}, "description": "A list of required field names.\n", "example": ["name", "email"]}, "id": {"type": "string", "description": "The *primary identifier* of the `Role for a Contact`.", "example": "Um9sZTo0Mg==", "readOnly": true}}, "required": ["id", "required_fields", "name"]}, "RoleAssignment": {"title": "RoleAssignment", "type": "object", "description": "A role assignment for a contact", "properties": {"role": {"type": "string", "description": "The `id` of a role the contact is assigned to.\n", "example": "role:23"}, "contact": {"type": "string", "description": "The `id` of a contact the role is assigned to.\n", "example": "contact:42b"}, "id": {"type": "string", "description": "The *primary identifier* of the `A role assignment for a contact`.", "example": "Um9sZUFzc2lnbm1lbnQ6NDI=", "readOnly": true}}, "required": ["id", "contact", "role"]}, "RoleAssignmentPatch": {"title": "RoleAssignmentPatch", "type": "object", "description": "A role assignment update", "properties": {"role": {"type": "string", "description": "The `id` of a role the contact is assigned to.\n", "example": "role:23"}, "contact": {"type": "string", "description": "The `id` of a contact the role is assigned to.\n", "example": "contact:42b"}}}, "RoleAssignmentRequest": {"title": "RoleAssignmentRequest", "type": "object", "description": "A role assignment request", "properties": {"role": {"type": "string", "description": "The `id` of a role the contact is assigned to.\n", "example": "role:23"}, "contact": {"type": "string", "description": "The `id` of a contact the role is assigned to.\n", "example": "contact:42b"}}, "required": ["contact", "role"]}, "RoleAssignmentUpdate": {"title": "RoleAssignmentUpdate", "type": "object", "description": "A role assignemnt update", "properties": {"role": {"type": "string", "description": "The `id` of a role the contact is assigned to.\n", "example": "role:23"}, "contact": {"type": "string", "description": "The `id` of a contact the role is assigned to.\n", "example": "contact:42b"}}, "required": ["contact", "role"]}, "RolePatch": {"title": "RolePatch", "type": "object", "description": "Role Update", "properties": {"name": {"type": "string", "description": "The name of the role.\n", "example": "noc", "maxLength": 80}, "required_fields": {"type": "array", "items": {"type": "string", "maxLength": 80}, "description": "A list of required field names.\n", "example": ["name", "email"]}}}, "RoleRequest": {"title": "RoleRequest", "type": "object", "description": "Create Role", "properties": {"name": {"type": "string", "description": "The name of the role.\n", "example": "noc", "maxLength": 80}, "required_fields": {"type": "array", "items": {"type": "string", "maxLength": 80}, "description": "A list of required field names.\n", "example": ["name", "email"]}}, "required": ["required_fields", "name"]}, "RoleUpdate": {"title": "RoleUpdate", "type": "object", "description": "Role Update", "properties": {"name": {"type": "string", "description": "The name of the role.\n", "example": "noc", "maxLength": 80}, "required_fields": {"type": "array", "items": {"type": "string", "maxLength": 80}, "description": "A list of required field names.\n", "example": ["name", "email"]}}, "required": ["required_fields", "name"]}, "Event": {"title": "Event", "type": "object", "description": "Event", "properties": {"serial": {"type": "integer"}, "account": {"type": "string", "description": "The `id` of the related `Account`.\n\n", "example": "QWNjb3VudDo0Mg==", "readOnly": true}, "payload": {"type": "object"}, "timestamp": {"type": "string", "format": "date-time"}}, "required": ["timestamp", "payload", "type", "account", "serial"]}, "Status": {"title": "Status", "type": "object", "description": "Status Message", "properties": {"severity": {"type": "integer", "format": "int32", "description": "We are using syslog severity levels: 0 = Emergency,\n1 = Alert, 2 = Critical, 3 = Error, 4 = Warning,\n5 = Notice, 6 = Informational, 7 = Debug.\n", "example": 2, "minimum": 0, "maximum": 7}, "tag": {"type": "string", "description": "A machine readable message identifier.\n", "example": "proxy_arp_detected"}, "message": {"type": "string", "description": "A human readable message, describing the problem\nand may contain hints for resolution.\n", "example": "The peer sent an ARP reply for an IP addresses that has not been assigned to them."}, "attrs": {"type": "object", "description": "Optional machine readable key value pairs\nsupplementing the message.\n\nA custom, detailed or localized error messagen can\nbe presented to the user, derived from the `tag` and `attrs`.\n", "example": {"mac": "02:42:23:42:a0:bc"}}, "timestamp": {"type": "string", "format": "date-time", "description": "The time and date when the event occured."}}, "required": ["timestamp", "message", "tag", "severity"]}, "ApiExtension": {"title": "ApiExtension", "type": "object", "description": "Implementation specific API extensions", "properties": {"name": {"type": "string", "description": "Name of the extension.\n", "example": "iNet Services"}, "publisher": {"type": "string", "description": "Publisher of the extension.\n", "example": "EXAMPLE-IX"}, "documentation_url": {"type": "string", "format": "uri", "description": "URL of the documentation homepage of the extension.\n", "example": "https://docs.ixp.example.com/ix-api/extensions/inet-services"}, "base_url": {"type": "string", "format": "uri", "description": "Extension endpoints are available under this base url.\n", "example": "https://ixapi.ixp.example.com/v2/inet-services/"}, "spec_url": {"type": "string", "format": "uri", "description": "URL of the extensions schema specifications.\nThe schema format schould be OpenAPI v3.\n", "example": "https://docs.ixp.example.com/ix-api/extensions/inet-services/schema.json"}}, "required": ["spec_url", "base_url", "documentation_url", "publisher", "name"]}, "ApiFeatures": {"title": "ApiFeatures", "type": "object", "description": "Optional API Features", "properties": {"pagination": {"type": "boolean", "description": "The API implementation supports pagination on `list`\noperations."}}}, "ApiHealth": {"title": "ApiHealth", "type": "object", "description": "Health Status Response", "properties": {"status": {"type": "string", "enum": ["pass", "fail", "warn"], "description": "status indicates whether the service status is\nacceptable or not."}, "version": {"type": "string", "description": "Public version of the service.\n", "example": "1"}, "releaseId": {"type": "string", "description": "Release version of the api implementation.\n", "example": "1.23.0"}, "notes": {"type": "array", "items": {"type": "string"}, "description": "Array of notes relevant to current state of health."}, "output": {"type": "string", "description": "Raw error output, in case of \"fail\" or \"warn\" states."}, "serviceId": {"type": "string", "description": "A unique identifier of the service, in the application scope."}, "description": {"type": "string", "description": "A human-friendly description of the service."}, "checks": {"type": "object", "additionalProperties": {"type": "object", "additionalProperties": {"type": "string"}}, "description": "The \"checks\" object MAY have a number of unique keys,\none for each logical downstream dependency or sub-component.\n\nSince each sub-component may be backed by several nodes\nwith varying health statuses, these keys point to arrays\nof objects. In case of a single-node sub-component\n(or if presence of nodes is not relevant), a single-element\narray SHOULD be used as the value, for consistency.\n\nPlease see\nhttps://tools.ietf.org/id/draft-inadarei-api-health-check-04.html#the-checks-object\nfor details."}, "links": {"type": "object", "additionalProperties": {"type": "string"}, "description": "Is an object containing link relations and URIs [RFC3986]\nfor external links that MAY contain more information about\nthe health of the endpoint."}}, "required": ["status"]}, "ApiImplementation": {"title": "ApiImplementation", "type": "object", "description": "API Implementation", "properties": {"schema_version": {"type": "string", "description": "Version of the implemented IX-API schema.\n", "example": "2.0.0"}, "service_version": {"type": "string", "description": "Version of the API service.\n", "example": "1.23.0"}, "supported_network_service_types": {"type": "array", "items": {"type": "string"}, "description": "Array of network service types, supported by the IX.\n", "example": ["exchange_lan", "p2p_vc", "cloud_vc"]}, "supported_network_service_config_types": {"type": "array", "items": {"type": "string"}, "description": "Array of supported network service config types.\n", "example": ["exchange_lan", "p2p_vc", "cloud_vc"]}, "supported_network_feature_types": {"type": "array", "items": {"type": "string"}, "description": "Array of supported network feature types.\n", "example": ["route_server"]}, "supported_network_feature_config_types": {"type": "array", "items": {"type": "string"}, "description": "Array of supported network feature config types.\n", "example": ["route_server"]}, "supported_operations": {"type": "array", "items": {"type": "string"}, "description": "Array of implemented operations of the ix-api schema.\n", "example": ["connections_list", "connections_read", "network_service_configs_create"]}, "supported_features": {"$ref": "#/components/schemas/ApiFeatures"}}, "required": ["supported_features", "supported_operations", "supported_network_feature_config_types", "supported_network_feature_types", "supported_network_service_config_types", "supported_network_service_types", "schema_version"]}, "IpAddress": {"title": "IpAddress", "type": "object", "description": "IP-Address", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `IP-Address`.", "example": "SXBBZGRyZXNzOjQy", "readOnly": true}, "version": {"type": "integer", "enum": [4, 6], "description": "The version of the internet protocol.\n", "example": 4}, "address": {"type": "string", "description": "IPv4 or IPv6 Address in the following format:\n- IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\n- IPv6: hexadecimal colon separated notation\n", "example": "23.142.52.0"}, "prefix_length": {"type": "integer", "format": "int32", "description": "The CIDR ip prefix length\n", "example": 23, "minimum": 0, "maximum": 128}, "fqdn": {"type": "string", "nullable": true, "maxLength": 100}, "valid_not_before": {"type": "string", "format": "date-time", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}}, "required": ["prefix_length", "address", "version", "id", "consuming_account", "managing_account"]}, "IpAddressPatch": {"title": "IpAddressPatch", "type": "object", "description": "IP-Address Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `IP-Address Update`.", "example": "SXBBZGRyZXNzUGF0Y2g6NDI=", "readOnly": true}, "version": {"type": "integer", "enum": [4, 6], "description": "The version of the internet protocol.\n", "example": 4}, "address": {"type": "string", "description": "IPv4 or IPv6 Address in the following format:\n- IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\n- IPv6: hexadecimal colon separated notation\n", "example": "23.142.52.0"}, "prefix_length": {"type": "integer", "format": "int32", "description": "The CIDR ip prefix length\n", "example": 23, "minimum": 0, "maximum": 128}, "fqdn": {"type": "string", "nullable": true, "maxLength": 100}, "valid_not_before": {"type": "string", "format": "date-time", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}}}, "IpAddressRequest": {"title": "IpAddressRequest", "type": "object", "description": "IP-Address / Prefix allocation Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `IP-Address / Prefix allocation Request`.", "example": "SXBBZGRyZXNzUmVxdWVzdDo0Mg==", "readOnly": true}, "version": {"type": "integer", "enum": [4, 6], "description": "The version of the internet protocol.\n", "example": 4}, "address": {"type": "string", "description": "IPv4 or IPv6 Address in the following format:\n- IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\n- IPv6: hexadecimal colon separated notation\n", "example": "23.142.52.0"}, "prefix_length": {"type": "integer", "format": "int32", "description": "The CIDR ip prefix length\n", "example": 23, "minimum": 0, "maximum": 128}, "fqdn": {"type": "string", "nullable": true, "maxLength": 100}, "valid_not_before": {"type": "string", "format": "date-time", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}}, "required": ["prefix_length", "address", "version", "id", "consuming_account", "managing_account"]}, "IpAddressShort": {"title": "IpAddressShort", "type": "object", "description": "IP-Address", "properties": {"version": {"type": "integer", "enum": [4, 6], "description": "The version of the internet protocol.\n", "example": 6}, "address": {"type": "string", "description": "The IP address in the following format:\n- IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\n- IPv6: hexadecimal colon separated notation\n", "example": "fd42:2342::1"}}, "required": ["address", "version"]}, "IpAddressUpdate": {"title": "IpAddressUpdate", "type": "object", "description": "IP-Address Update", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `IP-Address Update`.", "example": "SXBBZGRyZXNzVXBkYXRlOjQy", "readOnly": true}, "version": {"type": "integer", "enum": [4, 6], "description": "The version of the internet protocol.\n", "example": 4}, "address": {"type": "string", "description": "IPv4 or IPv6 Address in the following format:\n- IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\n- IPv6: hexadecimal colon separated notation\n", "example": "23.142.52.0"}, "prefix_length": {"type": "integer", "format": "int32", "description": "The CIDR ip prefix length\n", "example": 23, "minimum": 0, "maximum": 128}, "fqdn": {"type": "string", "nullable": true, "maxLength": 100}, "valid_not_before": {"type": "string", "format": "date-time", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}}, "required": ["prefix_length", "address", "version", "id", "consuming_account", "managing_account"]}, "MacAddress": {"title": "MacAddress", "type": "object", "description": "MAC-Address", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `MAC-Address`.", "example": "TWFjQWRkcmVzczo0Mg==", "readOnly": true}, "address": {"type": "string", "description": "Unicast MAC address, formatted hexadecimal values with colons.\n", "example": "42:23:bc:8e:b8:b0"}, "valid_not_before": {"type": "string", "format": "date-time", "description": "When a mac address is assigned to a NSC, and the current\ndatetime is before this value, then the MAC address *cannot*\nbe used on the peering platform.\n\nAfterwards, it is supposed to be available. If the value is\n`null` or the property does not exist, the mac address is\nvalid from the creation date.", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "description": "When a mac address is assigned to an NSC, and the current datetime\nis before this value, the MAC address *can* be used on the peering platform.\n\nAfterwards, it is supposed to be unassigned from the NSC and cannot\nany longer be used on the peering platform.\n\nIf the value is null or the property does not exist, the MAC address\nis valid indefinitely. The value may not be in the past.", "nullable": true}}, "required": ["address", "id", "consuming_account", "managing_account"]}, "MacAddressRequest": {"title": "MacAddressRequest", "type": "object", "description": "MAC-Address Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `MAC-Address Request`.", "example": "TWFjQWRkcmVzc1JlcXVlc3Q6NDI=", "readOnly": true}, "address": {"type": "string", "description": "Unicast MAC address, formatted hexadecimal values with colons.\n", "example": "42:23:bc:8e:b8:b0"}, "valid_not_before": {"type": "string", "format": "date-time", "description": "When a mac address is assigned to a NSC, and the current\ndatetime is before this value, then the MAC address *cannot*\nbe used on the peering platform.\n\nAfterwards, it is supposed to be available. If the value is\n`null` or the property does not exist, the mac address is\nvalid from the creation date.", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "description": "When a mac address is assigned to an NSC, and the current datetime\nis before this value, the MAC address *can* be used on the peering platform.\n\nAfterwards, it is supposed to be unassigned from the NSC and cannot\nany longer be used on the peering platform.\n\nIf the value is null or the property does not exist, the MAC address\nis valid indefinitely. The value may not be in the past.", "nullable": true}}, "required": ["address", "id", "consuming_account", "managing_account"]}, "Peer": {"title": "Peer", "type": "object", "description": "MAC-, IP-Address and ASN of the peer.", "properties": {"asn": {"type": "integer", "description": "The ASN of the peer.\n", "example": 65534, "minimum": 0}, "ip": {"$ref": "#/components/schemas/IpAddressShort"}, "mac_address": {"type": "string", "description": "Unicast MAC address, formatted hexadecimal values with colons.\n", "example": "42:23:bc:8e:b8:b0"}}, "required": ["mac_address"]}, "Conflict": {"title": "Conflict", "type": "object", "description": "A conflict is preventing success", "properties": {"resource_type": {"type": "string", "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"], "description": "The resource type refers to an ix-api resource.\n", "example": "role-assignments"}, "resource_id": {"type": "string", "description": "The id of the resource which has a conflict with the\nrequest operation on the current resource.\n", "example": "RA:2819238"}, "resource_property": {"type": "string", "description": "Indicates the property where the resource is in use.\n", "example": "contact", "nullable": true}, "remote_resource_type": {"type": "string", "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"], "description": "The type of the conflicting resource.\n", "example": "contacts"}, "remote_resource_id": {"type": "string", "description": "The id of the conflicting resource. This is in most\ncases the id of the current resource.\n", "example": "C:523589"}}, "required": ["remote_resource_id", "remote_resource_type", "resource_id", "resource_type"]}, "ProblemResponse": {"title": "ProblemResponse", "type": "object", "description": "Encodes a problem into an appropriate response body.", "properties": {"title": {"type": "string", "description": "A short, human-readable summary of the problem type.\n\nIt SHOULD NOT change from occurrence to\noccurrence of the problem, except for purposes\nof localization (e.g., using proactive content\nnegotiation; see [RFC7231], Section 3.4).\n", "example": "Some fields have validation errors."}, "status": {"type": "integer", "description": "The HTTP status code ([RFC7231], Section 6)\ngenerated by the origin server for this occurrence\nof the problem.", "minimum": 100}, "detail": {"type": "string", "description": "A human-readable explanation specific to this\noccurrence of the problem."}, "instance": {"type": "string", "description": "A URI reference that identifies the specific\noccurrence of the problem. It may or may not yield\nfurther information if dereferenced."}}, "required": ["type"]}, "ValidationErrorProperty": {"title": "ValidationErrorProperty", "type": "object", "description": "A failed validation", "properties": {"name": {"type": "string"}, "reason": {"type": "string"}}, "required": ["reason", "name"]}, "AllowMemberJoiningRule": {"title": "AllowMemberJoiningRule", "type": "object", "description": "A rule for members joining a private vlan", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "id": {"type": "string", "description": "The *primary identifier* of the `A rule for members joining a private vlan`.", "example": "QWxsb3dNZW1iZXJKb2luaW5nUnVsZTo0Mg==", "readOnly": true}, "capacity_min": {"type": "integer", "description": "Require an optional minimum capacity to join\nthe network service.", "nullable": true, "minimum": 1}, "capacity_max": {"type": "integer", "description": "An optional rate limit which has precedence over\nthe capacity set in the network service config.", "nullable": true, "minimum": 1}, "network_service": {"type": "string", "description": "The `id` of the related `NetworkService`.\n\n", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRule"}], "required": ["type", "network_service", "id", "consuming_account", "managing_account"]}, "AllowMemberJoiningRulePatch": {"title": "AllowMemberJoiningRulePatch", "type": "object", "description": "A vlan member joining rule update", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "id": {"type": "string", "description": "The *primary identifier* of the `A vlan member joining rule update`.", "example": "QWxsb3dNZW1iZXJKb2luaW5nUnVsZVBhdGNoOjQy", "readOnly": true}, "capacity_min": {"type": "integer", "description": "Require an optional minimum capacity to join\nthe network service.", "nullable": true, "minimum": 1}, "capacity_max": {"type": "integer", "description": "An optional rate limit which has precedence over\nthe capacity set in the network service config.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRulePatch"}]}, "AllowMemberJoiningRuleRequest": {"title": "AllowMemberJoiningRuleRequest", "type": "object", "description": "A new vlan member joining rule", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "id": {"type": "string", "description": "The *primary identifier* of the `A new vlan member joining rule`.", "example": "QWxsb3dNZW1iZXJKb2luaW5nUnVsZVJlcXVlc3Q6NDI=", "readOnly": true}, "capacity_min": {"type": "integer", "description": "Require an optional minimum capacity to join\nthe network service.", "nullable": true, "minimum": 1}, "capacity_max": {"type": "integer", "description": "An optional rate limit which has precedence over\nthe capacity set in the network service config.", "nullable": true, "minimum": 1}, "network_service": {"type": "string", "description": "The `id` of the related `NetworkService`.\n\n", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleRequest"}], "required": ["type", "network_service", "id", "consuming_account", "managing_account"]}, "AllowMemberJoiningRuleUpdate": {"title": "AllowMemberJoiningRuleUpdate", "type": "object", "description": "A vlan member joining rule update", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "id": {"type": "string", "description": "The *primary identifier* of the `A vlan member joining rule update`.", "example": "QWxsb3dNZW1iZXJKb2luaW5nUnVsZVVwZGF0ZTo0Mg==", "readOnly": true}, "capacity_min": {"type": "integer", "description": "Require an optional minimum capacity to join\nthe network service.", "nullable": true, "minimum": 1}, "capacity_max": {"type": "integer", "description": "An optional rate limit which has precedence over\nthe capacity set in the network service config.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleUpdate"}], "required": ["type", "id", "consuming_account", "managing_account"]}, "CloudNetworkService": {"title": "CloudNetworkService", "type": "object", "description": "Cloud Network Service", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "nsc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe `RoleAssignment` is associated through the\n`role_assignments` list property of the network service configuration.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZTo0Mg==", "readOnly": true}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}, "diversity": {"type": "integer", "description": "Same value as the corresponding `ProductOffering`.\n\nThe service can be delivered over multiple handovers from\nthe exchange to the `service_provider`.\n\nThe `diversity` denotes the number of handovers between the\nexchange and the service provider. A value of two signals a\nredundant service.\n\nOnly one network service configuration for each `handover` and\n`cloud_vlan` can be created.", "minimum": 1}, "provider_ref": {"type": "string", "description": "For a cloud network service with the exchange first\nworkflow, the `provider_ref` will be a reference\nto a resource of the cloud provider. (E.g. the UUID of\na virtual circuit.)\n\nThe `provider_ref` is managed by the exchange and its\nmeaning may vary between different cloud services.\n", "example": "331050d5-76fb-498b-b72a-248520278fbd", "nullable": true}, "cloud_key": {"type": "string", "description": "The cloud key is used to specify to which user or\nexisting circuit of a cloud provider this `network-service`\nshould be provisioned.\n\nFor example, for a provider like *AWS*, this would be the\n*account number* (Example: `123456789876`), or for a provider\nlike Azure, this would be the service key\n(Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)"}, "availability_zones": {"type": "array", "items": {"type": "string"}, "description": "The availability zones the service can support.", "example": ["QXZhaWxhYmlsaXR5Wm9uZTo0Mg=="]}, "network_features": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `NetworkFeature`.\n\n", "example": ["TmV0d29ya0ZlYXR1cmU6NDI="]}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering` which can be used in the\nnetwork service configs for this service.", "example": ["UHJvZHVjdE9mZmVyaW5nOjQy"]}}, "allOf": [{"$ref": "#/components/schemas/NetworkService"}], "required": ["type", "cloud_key", "provider_ref", "diversity", "id", "billing_account", "consuming_account", "managing_account", "product_offering", "nsc_required_contact_roles", "state"]}, "CloudNetworkServicePatch": {"title": "CloudNetworkServicePatch", "type": "object", "description": "Cloud Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Update`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZVBhdGNoOjQy", "readOnly": true}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}, "cloud_key": {"type": "string", "description": "The cloud key is used to specify to which user or\nexisting circuit of a cloud provider this `network-service`\nshould be provisioned.\n\nFor example, for a provider like *AWS*, this would be the\n*account number* (Example: `123456789876`), or for a provider\nlike Azure, this would be the service key\n(Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)\n\n**Please note: *Any update to this field may be rejected if the\nservice has successfully been provisioned*.**"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "CloudNetworkServiceRequest": {"title": "CloudNetworkServiceRequest", "type": "object", "description": "Cloud Network Service Request", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Request`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI=", "readOnly": true}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}, "cloud_key": {"type": "string", "description": "The cloud key is used to specify to which user or\nexisting circuit of a cloud provider this `network-service`\nshould be provisioned.\n\nFor example, for a provider like *AWS*, this would be the\n*account number* (Example: `123456789876`), or for a provider\nlike Azure, this would be the service key\n(Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}], "required": ["type", "cloud_key", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "CloudNetworkServiceUpdate": {"title": "CloudNetworkServiceUpdate", "type": "object", "description": "Cloud Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `Cloud Network Service Update`.", "example": "Q2xvdWROZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg==", "readOnly": true}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}, "cloud_key": {"type": "string", "description": "The cloud key is used to specify to which user or\nexisting circuit of a cloud provider this `network-service`\nshould be provisioned.\n\nFor example, for a provider like *AWS*, this would be the\n*account number* (Example: `123456789876`), or for a provider\nlike Azure, this would be the service key\n(Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)\n\n**Please note: *Any update to this field may be rejected if the\nservice has successfully been provisioned*.**"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}], "required": ["type", "cloud_key", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "DenyMemberJoiningRule": {"title": "DenyMemberJoiningRule", "type": "object", "description": "A rule for members joining a private vlan", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "network_service": {"type": "string", "description": "The `id` of the related `NetworkService`.\n\n", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRule"}], "required": ["type", "network_service", "consuming_account", "managing_account"]}, "DenyMemberJoiningRulePatch": {"title": "DenyMemberJoiningRulePatch", "type": "object", "description": "A vlan member joining rule update", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRulePatch"}]}, "DenyMemberJoiningRuleRequest": {"title": "DenyMemberJoiningRuleRequest", "type": "object", "description": "A new vlan member joining rule", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}, "network_service": {"type": "string", "description": "The `id` of the related `NetworkService`.\n\n", "example": "TmV0d29ya1NlcnZpY2U6NDI="}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleRequest"}], "required": ["type", "network_service", "consuming_account", "managing_account"]}, "DenyMemberJoiningRuleUpdate": {"title": "DenyMemberJoiningRuleUpdate", "type": "object", "description": "A vlan member joining rule update", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account to which access to the\nnetwork service should be granted or denied.\n", "example": "2381982"}}, "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleUpdate"}], "required": ["type", "consuming_account", "managing_account"]}, "ExchangeLanNetworkService": {"title": "ExchangeLanNetworkService", "type": "object", "description": "Exchange Lan Network Service", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "nsc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe `RoleAssignment` is associated through the\n`role_assignments` list property of the network service configuration.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "id": {"type": "string", "description": "The *primary identifier* of the `Exchange Lan Network Service`.", "example": "RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZTo0Mg==", "readOnly": true}, "name": {"type": "string", "description": "Exchange-dependent service name, will be shown on the invoice.", "maxLength": 40}, "metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork` where\nthe exchange lan network service is directly provided.\n\nSame as `service_metro_area_network` on the related\n`ProductOffering`.\n", "example": "man:293225:LON2"}, "peeringdb_ixid": {"type": "integer", "description": "PeeringDB ixid", "nullable": true}, "ixfdb_ixid": {"type": "integer", "description": "id of ixfdb", "nullable": true}, "network_features": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `NetworkFeature`.\n\n", "example": ["TmV0d29ya0ZlYXR1cmU6NDI="]}, "subnet_v4": {"type": "string", "description": "IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nCIDR notation.\n", "example": "23.142.52.0/21"}, "subnet_v6": {"type": "string", "description": "IPv6 subnet in hexadecimal colon separated CIDR notation.\n", "example": "2001:23:42::/48"}, "product_offering": {"type": "string", "description": "*deprecation notice*", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}}, "allOf": [{"$ref": "#/components/schemas/NetworkService"}], "required": ["type", "subnet_v6", "subnet_v4", "network_features", "metro_area_network", "name", "id", "consuming_account", "managing_account", "nsc_required_contact_roles", "state"]}, "IXPSpecificFeatureFlag": {"title": "IXPSpecificFeatureFlag", "type": "object", "description": "IXP-Specific Feature Flag", "properties": {"name": {"type": "string", "description": "The name of the feature flag.\n", "example": "RPKI-HARD-FILTER", "maxLength": 40}, "description": {"type": "string", "description": "The description of the feature flag.\n", "example": "RPKI reject invalid filtering is available", "maxLength": 80}, "mandatory": {"type": "boolean", "description": "This feature will always be enabled, even if not provided in\nthe corresponding config's list of `flags`.\n"}}, "required": ["mandatory", "description", "name"]}, "MP2MPNetworkService": {"title": "MP2MPNetworkService", "type": "object", "description": "MP2MP Network Service", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "nsc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe `RoleAssignment` is associated through the\n`role_assignments` list property of the network service configuration.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering` which can be used in the\nnetwork service configs for this service.", "example": ["UHJvZHVjdE9mZmVyaW5nOjQy"]}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZTo0Mg==", "readOnly": true}, "public": {"type": "boolean", "description": "A public mp2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `display_name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "display_name": {"type": "string", "description": "Name of the multi-point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of, for example:\n\"Financial Clearance LAN\".\n", "example": "Closed User Group Finance"}, "subnet_v4": {"type": "string", "description": "IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nCIDR notation.\n", "example": "23.142.52.0/21"}, "subnet_v6": {"type": "string", "description": "IPv6 subnet in hexadecimal colon separated CIDR notation.\n", "example": "2001:23:42::/48"}, "member_joining_rules": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `MemberJoiningRule`.\n\n", "example": ["TWVtYmVySm9pbmluZ1J1bGU6NDI="]}, "network_features": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `NetworkFeature`.\n\n", "example": ["TmV0d29ya0ZlYXR1cmU6NDI="]}, "mac_acl_protection": {"type": "boolean", "description": "When enabled, only MAC addresses in the referenced in the network\nservice config's `macs` property are allowed to send and receive\ntraffic on this network service."}}, "allOf": [{"$ref": "#/components/schemas/NetworkService"}], "required": ["type", "network_features", "member_joining_rules", "id", "billing_account", "consuming_account", "managing_account", "product_offering", "nsc_required_contact_roles", "state"]}, "MP2MPNetworkServicePatch": {"title": "MP2MPNetworkServicePatch", "type": "object", "description": "MP2MP Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Update`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZVBhdGNoOjQy", "readOnly": true}, "public": {"type": "boolean", "description": "A public mp2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `display_name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "display_name": {"type": "string", "description": "Name of the multi-point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of, for example:\n\"Financial Clearance LAN\".\n", "example": "Closed User Group Finance"}, "subnet_v4": {"type": "string", "description": "IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nCIDR notation.\n", "example": "23.142.52.0/21"}, "subnet_v6": {"type": "string", "description": "IPv6 subnet in hexadecimal colon separated CIDR notation.\n", "example": "2001:23:42::/48"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "MP2MPNetworkServiceRequest": {"title": "MP2MPNetworkServiceRequest", "type": "object", "description": "MP2MP Network Service Request", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Request`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI=", "readOnly": true}, "public": {"type": "boolean", "description": "A public mp2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `display_name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "display_name": {"type": "string", "description": "Name of the multi-point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of, for example:\n\"Financial Clearance LAN\".\n", "example": "Closed User Group Finance"}, "subnet_v4": {"type": "string", "description": "IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nCIDR notation.\n", "example": "23.142.52.0/21"}, "subnet_v6": {"type": "string", "description": "IPv6 subnet in hexadecimal colon separated CIDR notation.\n", "example": "2001:23:42::/48"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}], "required": ["type", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "MP2MPNetworkServiceUpdate": {"title": "MP2MPNetworkServiceUpdate", "type": "object", "description": "MP2MP Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `MP2MP Network Service Update`.", "example": "TVAyTVBOZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg==", "readOnly": true}, "public": {"type": "boolean", "description": "A public mp2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `display_name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "display_name": {"type": "string", "description": "Name of the multi-point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of, for example:\n\"Financial Clearance LAN\".\n", "example": "Closed User Group Finance"}, "subnet_v4": {"type": "string", "description": "IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nCIDR notation.\n", "example": "23.142.52.0/21"}, "subnet_v6": {"type": "string", "description": "IPv6 subnet in hexadecimal colon separated CIDR notation.\n", "example": "2001:23:42::/48"}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}], "required": ["type", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "MemberJoiningRule": {"title": "MemberJoiningRule", "description": "MemberJoiningRule", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRule", "deny": "#/components/schemas/DenyMemberJoiningRule"}}}, "MemberJoiningRulePatch": {"title": "MemberJoiningRulePatch", "description": "MemberJoiningRulePatch", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRulePatch", "deny": "#/components/schemas/DenyMemberJoiningRulePatch"}}}, "MemberJoiningRuleRequest": {"title": "MemberJoiningRuleRequest", "description": "MemberJoiningRuleRequest", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleRequest", "deny": "#/components/schemas/DenyMemberJoiningRuleRequest"}}}, "MemberJoiningRuleUpdate": {"title": "MemberJoiningRuleUpdate", "description": "MemberJoiningRuleUpdate", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleUpdate", "deny": "#/components/schemas/DenyMemberJoiningRuleUpdate"}}}, "NetworkFeature": {"title": "NetworkFeature", "description": "NetworkFeature", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeature"}}}, "NetworkService": {"title": "NetworkService", "description": "NetworkService", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkService", "p2p_vc": "#/components/schemas/P2PNetworkService", "p2mp_vc": "#/components/schemas/P2MPNetworkService", "mp2mp_vc": "#/components/schemas/MP2MPNetworkService", "cloud_vc": "#/components/schemas/CloudNetworkService"}}}, "NetworkServiceChangeRequest": {"title": "NetworkServiceChangeRequest", "type": "object", "description": "NetworkServiceChangeRequest", "properties": {"product_offering": {"type": "string", "description": "Migrate to a diffrent product offering. Please note, that\nthe offering only may differ in bandwidth.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "capacity": {"type": "integer", "description": "The desired capacity of the service in Mbps.\n\nMust be within the range of `bandwidth_min` and\n`bandwidth_max` of the `ProductOffering`.\n\nWhen `null` the maximum capacity wil be used.", "nullable": true, "minimum": 1}}, "required": ["product_offering"]}, "NetworkServiceDeleteResponse": {"title": "NetworkServiceDeleteResponse", "description": "NetworkServiceDeleteResponse", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkService", "p2mp_vc": "#/components/schemas/P2MPNetworkService", "mp2mp_vc": "#/components/schemas/MP2MPNetworkService", "cloud_vc": "#/components/schemas/CloudNetworkService"}}}, "NetworkServicePatch": {"title": "NetworkServicePatch", "description": "NetworkServicePatch", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkServicePatch", "p2mp_vc": "#/components/schemas/P2MPNetworkServicePatch", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServicePatch", "cloud_vc": "#/components/schemas/CloudNetworkServicePatch"}}}, "NetworkServiceRequest": {"title": "NetworkServiceRequest", "description": "NetworkServiceRequest", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkServiceRequest", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceRequest", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceRequest", "cloud_vc": "#/components/schemas/CloudNetworkServiceRequest"}}}, "NetworkServiceUpdate": {"title": "NetworkServiceUpdate", "description": "NetworkServiceUpdate", "type": "object", "properties": {"type": {"type": "string"}}, "required": ["type"], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkServiceUpdate", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceUpdate", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceUpdate", "cloud_vc": "#/components/schemas/CloudNetworkServiceUpdate"}}}, "P2MPNetworkService": {"title": "P2MPNetworkService", "type": "object", "description": "P2MP Network Service", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "nsc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe `RoleAssignment` is associated through the\n`role_assignments` list property of the network service configuration.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering` which can be used in the\nnetwork service configs for this service.", "example": ["UHJvZHVjdE9mZmVyaW5nOjQy"]}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlOjQy", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Tree Customer"}, "public": {"type": "boolean", "description": "A public p2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made\navailable.\n\nOther required fields are redacted.", "default": false}, "network_features": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `NetworkFeature`.\n\n", "example": ["TmV0d29ya0ZlYXR1cmU6NDI="]}, "member_joining_rules": {"type": "array", "items": {"type": "string"}, "description": "A list of `id`s of the related `MemberJoiningRule`.\n\n", "example": ["TWVtYmVySm9pbmluZ1J1bGU6NDI="]}}, "allOf": [{"$ref": "#/components/schemas/NetworkService"}], "required": ["type", "member_joining_rules", "network_features", "id", "billing_account", "consuming_account", "managing_account", "product_offering", "nsc_required_contact_roles", "state"]}, "P2MPNetworkServicePatch": {"title": "P2MPNetworkServicePatch", "type": "object", "description": "P2MP Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Update`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlUGF0Y2g6NDI=", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Tree Customer"}, "public": {"type": "boolean", "description": "A public p2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made\navailable.\n\nOther required fields are redacted.", "default": false}}, "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "P2MPNetworkServiceRequest": {"title": "P2MPNetworkServiceRequest", "type": "object", "description": "P2MP Network Service Request", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Request`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlUmVxdWVzdDo0Mg==", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Tree Customer"}, "public": {"type": "boolean", "description": "A public p2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made\navailable.\n\nOther required fields are redacted.", "default": false}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}], "required": ["type", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "P2MPNetworkServiceUpdate": {"title": "P2MPNetworkServiceUpdate", "type": "object", "description": "P2MP Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2MP Network Service Update`.", "example": "UDJNUE5ldHdvcmtTZXJ2aWNlVXBkYXRlOjQy", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Tree Customer"}, "public": {"type": "boolean", "description": "A public p2mp network service can be joined\nby everyone on the exchange unless denied by\na member-joining-rule.\n\nPublic network services are visible to other\nmembers of the IXP, however only `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made\navailable.\n\nOther required fields are redacted.", "default": false}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}], "required": ["type", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "P2PNetworkService": {"title": "P2PNetworkService", "type": "object", "description": "P2P Network Service", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "nsc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe `RoleAssignment` is associated through the\n`role_assignments` list property of the network service configuration.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering` which can be used in the\nnetwork service configs for this service.", "example": ["UHJvZHVjdE9mZmVyaW5nOjQy"]}, "decommission_at": {"type": "string", "format": "date", "description": "The service will be decommissioned on this date.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "charged_until": {"type": "string", "format": "date", "description": "The service continues incurring charges until this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive Property)*"}, "current_billing_start_date": {"type": "string", "format": "date", "description": "Your obligation to pay for the service will start on this date.\n\nHowever, this date may change after an upgrade and not reflect\nthe inital start date of the service.\n\n*(Sensitive Property)*"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service`.", "example": "UDJQTmV0d29ya1NlcnZpY2U6NDI=", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Line Customer"}, "joining_member_account": {"type": "string", "description": "The account of the B-side member joining the virtual circuit.\n", "example": "231829"}, "availability_zones": {"type": "array", "items": {"type": "string"}, "description": "The availability zones for the service.", "example": ["QXZhaWxhYmlsaXR5Wm9uZTo0Mg=="]}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}}, "allOf": [{"$ref": "#/components/schemas/NetworkService"}], "required": ["type", "joining_member_account", "id", "billing_account", "consuming_account", "managing_account", "product_offering", "nsc_required_contact_roles", "state"]}, "P2PNetworkServicePatch": {"title": "P2PNetworkServicePatch", "type": "object", "description": "P2P Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Update`.", "example": "UDJQTmV0d29ya1NlcnZpY2VQYXRjaDo0Mg==", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Line Customer"}, "joining_member_account": {"type": "string", "description": "The account of the B-side member joining the virtual circuit.\n", "example": "231829"}, "availability_zones": {"type": "array", "items": {"type": "string"}, "description": "The availability zones for the service.", "example": ["QXZhaWxhYmlsaXR5Wm9uZTo0Mg=="]}}, "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "P2PNetworkServiceRequest": {"title": "P2PNetworkServiceRequest", "type": "object", "description": "P2P Network Service Request", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Request`.", "example": "UDJQTmV0d29ya1NlcnZpY2VSZXF1ZXN0OjQy", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Line Customer"}, "joining_member_account": {"type": "string", "description": "The account of the B-side member joining the virtual circuit.\n", "example": "231829"}, "availability_zones": {"type": "array", "items": {"type": "string"}, "description": "The availability zones for the service.", "example": ["QXZhaWxhYmlsaXR5Wm9uZTo0Mg=="]}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}], "required": ["type", "joining_member_account", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "P2PNetworkServiceUpdate": {"title": "P2PNetworkServiceUpdate", "type": "object", "description": "P2P Network Service Update", "properties": {"product_offering": {"type": "string", "description": "The `id` of the related `ProductOffering`.\n\n", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "id": {"type": "string", "description": "The *primary identifier* of the `P2P Network Service Update`.", "example": "UDJQTmV0d29ya1NlcnZpY2VVcGRhdGU6NDI=", "readOnly": true}, "display_name": {"type": "string", "description": "Name of the point to point virtual circuit.\n\nIt is visible to all parties allowed to connect\nto this virtual circuit.\n\nIt is intended for humans to make sense of.\n", "example": "E-Line Customer"}, "joining_member_account": {"type": "string", "description": "The account of the B-side member joining the virtual circuit.\n", "example": "231829"}, "availability_zones": {"type": "array", "items": {"type": "string"}, "description": "The availability zones for the service.", "example": ["QXZhaWxhYmlsaXR5Wm9uZTo0Mg=="]}}, "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}], "required": ["type", "joining_member_account", "id", "billing_account", "consuming_account", "managing_account", "product_offering"]}, "RouteServerNetworkFeature": {"title": "RouteServerNetworkFeature", "type": "object", "description": "Route Server Network Feature", "properties": {"id": {"type": "string", "description": "The *primary identifier* of the `Route Server Network Feature`.", "example": "Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZTo0Mg==", "readOnly": true}, "name": {"type": "string", "maxLength": 80}, "required": {"type": "boolean"}, "network_service": {"type": "string", "description": "The `id` of the related `NetworkService`.\n\n", "example": "TmV0d29ya1NlcnZpY2U6NDI="}, "nfc_required_contact_roles": {"type": "array", "items": {"type": "string"}, "description": "The configuration will require at least one of each of the\nspecified roles assigned to contacts.\n\nThe role assignments is associated with the network feature\nconfig through the `role_assignments` list property.", "example": ["Um9sZTo0Mg=="], "readOnly": true}, "flags": {"type": "array", "items": {"$ref": "#/components/schemas/IXPSpecificFeatureFlag"}, "description": "A list of IXP specific feature flags. This can be used\nto see if e.g. RPKI hard filtering is available."}, "asn": {"type": "integer", "minimum": 0}, "fqdn": {"type": "string", "description": "The FQDN of the route server.\n", "example": "rs1.moon-ix.net", "maxLength": 80}, "looking_glass_url": {"type": "string", "format": "uri", "description": "The url of the looking glass.\n", "example": "https://lg.moon-ix.net/rs1"}, "address_families": {"type": "array", "items": {"type": "string", "enum": ["af_inet", "af_inet6"]}, "description": "When creating a route server feature config, remember\nto specify which address family or families to use:\n\nIf the route server network feature only supports `af_inet`,\nthen the `as_set_v4` in the network feature config is required.\n\nIf only `af_inet6` is supported, then the `as_set_v6` is required.\n\nIf both `af_inet` and `af_inet6` are supported, either\n`as_set_v4` or `as_set_v6` is required, but both can be provided\nin the network service config.\n", "example": ["af_inet"]}, "session_mode": {"type": "string", "enum": ["public", "collector"], "description": "When creating a route server feature config, remember\nto specify the same session_mode as the route server.\n", "example": "public"}, "available_bgp_session_types": {"type": "array", "items": {"type": "string", "enum": ["active", "passive"]}, "description": "The route server provides the following session modes.\n", "example": ["passive"]}, "ip_v4": {"type": "string", "description": "IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)\nnotation.\n\nThis field is only set if the `address_families` include `af_inet`.\n", "example": "23.42.0.1"}, "ip_v6": {"type": "string", "description": "IPv6 address in hexadecimal colon separated notation.\n\nThis field is only set if the `address_families` include `af_inet6`.\n", "example": "2001:23:42::1"}}, "allOf": [{"$ref": "#/components/schemas/NetworkFeature"}], "required": ["type", "available_bgp_session_types", "session_mode", "address_families", "fqdn", "asn", "flags", "nfc_required_contact_roles", "network_service", "required", "name", "id"]}, "RoutingFunction": {"title": "RoutingFunction", "type": "object", "description": "Routing Function", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled", "cancelled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}, "managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "product_offering": {"type": "string", "description": "The product offering to be used for the\nrouting function.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "asn": {"type": "integer", "description": "Any routing function instance needs to be\nassigned a 2-byte or 4-byte ASN of the\ncustomer's choice. There is no restriction on\nprivate or public ASNs."}, "capacity": {"type": "integer", "description": "The desired upper bound of the capacity for\nthe routing function.", "nullable": true}}, "required": ["asn", "product_offering", "billing_account", "consuming_account", "managing_account", "state"]}, "RoutingFunctionPatch": {"title": "RoutingFunctionPatch", "type": "object", "description": "Routing Function Patch", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "product_offering": {"type": "string", "description": "The product offering to be used for the\nrouting function.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "asn": {"type": "integer", "description": "Any routing function instance needs to be\nassigned a 2-byte or 4-byte ASN of the\ncustomer's choice. There is no restriction on\nprivate or public ASNs."}, "capacity": {"type": "integer", "description": "The desired upper bound of the capacity for\nthe routing function.", "nullable": true}}}, "RoutingFunctionRequest": {"title": "RoutingFunctionRequest", "type": "object", "description": "Routing Function Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of the account responsible for managing the service via\nthe API. A manager can read and update the state of entities.\n", "example": "238189294"}, "consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}, "external_ref": {"type": "string", "description": "Reference field, free to use for the API user.\n*(Sensitive Property)*\n", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n*(Sensitive Property)*\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used,\na default MAY be chosen by the implementer.\n*(Sensitive Property)*\n", "example": "contract:31824", "nullable": true, "maxLength": 128}, "billing_account": {"type": "string", "description": "An account requires billing_information to be used as a `billing_account`.\n*(Sensitive Property)*", "example": "QWNjb3VudDo0Mg=="}, "product_offering": {"type": "string", "description": "The product offering to be used for the\nrouting function.", "example": "UHJvZHVjdE9mZmVyaW5nOjQy"}, "asn": {"type": "integer", "description": "Any routing function instance needs to be\nassigned a 2-byte or 4-byte ASN of the\ncustomer's choice. There is no restriction on\nprivate or public ASNs."}, "capacity": {"type": "integer", "description": "The desired upper bound of the capacity for\nthe routing function.", "nullable": true}}, "required": ["asn", "product_offering", "billing_account", "consuming_account", "managing_account"]}, "Aggregate": {"title": "Aggregate", "type": "object", "description": "Mapping of Aggregated Statistics", "properties": {"aggregates": {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/AggregateStatistics"}, "description": "Aggregated statistics for a connection or service configuration.\n\nFor the **property name** the string representation of the\naggregate interval in ISO8601 period notation is recommended.\n\nFor example: `PT5M`, `P1D`, `P30D`,`P1Y`.\n\nIf a window is defined via the `start` and `end` query parameter,\nthe **property name** will be `custom`.\n\nThe available intervals can differ by implementation.\n", "example": {"PT5M": {"title": "5 Minutes", "accuracy": 1.0, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}, "P30D": {"title": "30 Days", "accuracy": 0.95, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}}}}, "required": ["aggregates"]}, "AggregateStatistics": {"title": "AggregateStatistics", "type": "object", "description": "Statistics", "properties": {"title": {"type": "string", "description": "Title of the aggregated statistics.\n", "example": "30 Days"}, "start": {"type": "string", "format": "date-time", "description": "Start of the traffic aggregation."}, "end": {"type": "string", "format": "date-time", "description": "End of the traffic aggregation."}, "accuracy": {"type": "number", "description": "The accuracy is the ratio of *total aggregated samples* to\n*expected samples*.\n\nThe expected number of samples is the size of the window\nof the aggregate, divided by the aggregation resolution.\n\nFor example: A window of `24 h` with an aggregation resolution\nof `5 m` would yield `288` samples.\n\nIf only `275` samples are available for aggregation, the\naccuracy would be `0.95`.\n", "example": 0.95, "minimum": 0.0, "maximum": 1.0}, "created_at": {"type": "string", "format": "date-time", "description": "Timestamp when the statistics were created."}, "next_update_at": {"type": "string", "format": "date-time", "description": "Next update of the statistical data.\nThis may not correspond to the aggregate interval."}, "average_pps_in": {"type": "integer", "description": "Average number of inbound **packets per second**.\n", "example": 1730224, "minimum": 0}, "average_pps_out": {"type": "integer", "description": "Average number outbound **packets per second**.\n", "example": 17456, "minimum": 0}, "average_ops_in": {"type": "integer", "description": "Average inbound **octets per second**.\n", "example": 1734882240, "minimum": 0}, "average_ops_out": {"type": "integer", "description": "Average outbound **octets per second**.\n", "example": 173220, "minimum": 0}, "average_eps_in": {"type": "number", "description": "Average **errors per second** inbound.\n", "example": 0.32, "minimum": 0}, "average_eps_out": {"type": "number", "description": "Averages **errors per second** outbound.\n", "example": 0.01, "minimum": 0}, "average_dps_in": {"type": "number", "description": "Average **discards per second** inbound.\n", "example": 0.01, "minimum": 0}, "average_dps_out": {"type": "number", "description": "Averages **discards per second** outbound.\n", "example": 0.12, "minimum": 0}, "percentile95_pps_in": {"type": "integer", "description": "95th percentile of the inbound **octets per second**.\n", "example": 1734882240, "minimum": 0}, "percentile95_pps_out": {"type": "integer", "description": "95th percentile of outbound **packets per second**.\n", "example": 17456, "minimum": 0}, "percentile95_ops_out": {"type": "integer", "description": "95th percentile of outbound **octets per second**.\n", "example": 173220, "minimum": 0}, "maximum_pps_in": {"type": "integer", "description": "Peak inbound **packets per second** during the interval.\n", "example": 1730224, "minimum": 0}, "maximum_pps_out": {"type": "integer", "description": "Peak outbound **packets per second** during the interval.\n", "example": 17456, "minimum": 0}, "maximum_ops_in": {"type": "integer", "description": "Peak inbound **octets per second** during the interval.\n", "example": 5734882240, "minimum": 0}, "maximum_ops_out": {"type": "integer", "description": "Peak outbound **octets per second** during the interval.\n", "example": 473220, "minimum": 0}, "maximum_in_at": {"type": "string", "format": "date-time", "description": "Timestamp when the inbound peak occured."}, "maximum_out_at": {"type": "string", "format": "date-time", "description": "Timestamp when the outbound peak occured."}}, "required": ["average_ops_out", "average_ops_in", "average_pps_out", "average_pps_in", "next_update_at", "created_at", "accuracy", "end", "start", "title"]}, "AggregateTimeseries": {"title": "AggregateTimeseries", "type": "object", "description": "Aggregated Statistics Timeseries", "properties": {"title": {"type": "string", "description": "Title of the timeseries.\n", "example": "5 Minutes"}, "precision": {"type": "integer", "description": "Precision indicates the sampling rate of the aggregated traffic data\nin seconds.\nFor example if the data is aggregated over 5 minutes, the precision\nwould be 300.\n", "example": 300, "minimum": 0}, "created_at": {"type": "string", "format": "date-time", "description": "Timestamp when the statistics were created."}, "next_update_at": {"type": "string", "format": "date-time", "description": "Next update of the statistical data.\nThis may not correspond to the aggregate interval."}, "origin_timezone": {"type": "string", "description": "The timezone where the data was collected in tz database\nformat.\n", "example": "Europe/Amsterdam"}, "fields": {"type": "array", "items": {"type": "string"}, "description": "The fields used in the samples. They can be explicitly\nselected using the `fields` query parameter. The `timestamp` is\nalways included.\n", "example": ["timestamp", "average_pps_in", "average_pps_out", "average_ops_in", "average_ops_out"]}, "samples": {"type": "array", "items": {"type": "array", "items": {}, "minItems": 1, "example": ["2019-08-24T14:15:22Z", 120302, 42980203, 320302, 84990203]}, "description": "A list of timeseries samples, where samples are n-tuples, where\nthe first element is a timestamp.\n\n* `timestamp` (DateTime, `string`, ISO 8601, Example: `\"2001-10-23T23:42:10Z\"`)\n\nThe other fields can be selected in the `fields` query from the\naggregates. Default fields are:\n\n* `average_pps_in` (`integer`)\n* `average_pps_out` (`integer`)\n* `average_ops_in` (`integer`)\n* `average_ops_out` (`integer`)\n\nMissing values in the timeseries are represented by `null`."}}, "required": ["samples", "fields", "origin_timezone", "next_update_at", "created_at", "precision", "title"]}, "NetworkServiceConfigAggregate": {"title": "NetworkServiceConfigAggregate", "type": "object", "description": "Statistics for NetworkServiceConfig", "properties": {"aggregates": {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/NetworkServiceConfigAggregateStatistics"}, "description": "Aggregated statistics for a connection or service configuration.\n\nFor the **property name** the string representation of the\naggregate interval in ISO8601 period notation is recommended.\n\nFor example: `PT5M`, `P1D`, `P30D`,`P1Y`.\n\nIf a window is defined via the `start` and `end` query parameter,\nthe **property name** will be `custom`.\n\nThe available intervals can differ by implementation.\n", "example": {"PT5M": {"title": "5 Minutes", "accuracy": 1.0, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}, "P30D": {"title": "30 Days", "accuracy": 0.95, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}}}}, "required": ["aggregates"]}, "NetworkServiceConfigAggregateStatistics": {"title": "NetworkServiceConfigAggregateStatistics", "type": "object", "description": "AggregateStatistics for NetworkServiceConfig", "properties": {"title": {"type": "string", "description": "Title of the aggregated statistics.\n", "example": "30 Days"}, "start": {"type": "string", "format": "date-time", "description": "Start of the traffic aggregation."}, "end": {"type": "string", "format": "date-time", "description": "End of the traffic aggregation."}, "accuracy": {"type": "number", "description": "The accuracy is the ratio of *total aggregated samples* to\n*expected samples*.\n\nThe expected number of samples is the size of the window\nof the aggregate, divided by the aggregation resolution.\n\nFor example: A window of `24 h` with an aggregation resolution\nof `5 m` would yield `288` samples.\n\nIf only `275` samples are available for aggregation, the\naccuracy would be `0.95`.\n", "example": 0.95, "minimum": 0.0, "maximum": 1.0}, "created_at": {"type": "string", "format": "date-time", "description": "Timestamp when the statistics were created."}, "next_update_at": {"type": "string", "format": "date-time", "description": "Next update of the statistical data.\nThis may not correspond to the aggregate interval."}, "average_pps_in": {"type": "integer", "description": "Average number of inbound **packets per second**.\n", "example": 1730224, "minimum": 0}, "average_pps_out": {"type": "integer", "description": "Average number outbound **packets per second**.\n", "example": 17456, "minimum": 0}, "average_ops_in": {"type": "integer", "description": "Average inbound **octets per second**.\n", "example": 1734882240, "minimum": 0}, "average_ops_out": {"type": "integer", "description": "Average outbound **octets per second**.\n", "example": 173220, "minimum": 0}, "average_eps_in": {"type": "number", "description": "Average **errors per second** inbound.\n", "example": 0.32, "minimum": 0}, "average_eps_out": {"type": "number", "description": "Averages **errors per second** outbound.\n", "example": 0.01, "minimum": 0}, "average_dps_in": {"type": "number", "description": "Average **discards per second** inbound.\n", "example": 0.01, "minimum": 0}, "average_dps_out": {"type": "number", "description": "Averages **discards per second** outbound.\n", "example": 0.12, "minimum": 0}, "percentile95_pps_in": {"type": "integer", "description": "95th percentile of the inbound **octets per second**.\n", "example": 1734882240, "minimum": 0}, "percentile95_pps_out": {"type": "integer", "description": "95th percentile of outbound **packets per second**.\n", "example": 17456, "minimum": 0}, "percentile95_ops_out": {"type": "integer", "description": "95th percentile of outbound **octets per second**.\n", "example": 173220, "minimum": 0}, "maximum_pps_in": {"type": "integer", "description": "Peak inbound **packets per second** during the interval.\n", "example": 1730224, "minimum": 0}, "maximum_pps_out": {"type": "integer", "description": "Peak outbound **packets per second** during the interval.\n", "example": 17456, "minimum": 0}, "maximum_ops_in": {"type": "integer", "description": "Peak inbound **octets per second** during the interval.\n", "example": 5734882240, "minimum": 0}, "maximum_ops_out": {"type": "integer", "description": "Peak outbound **octets per second** during the interval.\n", "example": 473220, "minimum": 0}, "maximum_in_at": {"type": "string", "format": "date-time", "description": "Timestamp when the inbound peak occured."}, "maximum_out_at": {"type": "string", "format": "date-time", "description": "Timestamp when the outbound peak occured."}, "nsc_available_capacity": {"type": "integer", "description": "The capacity left on the `NetworkServiceConfig` in\n**megabits per second** (Mbps).\n", "example": 23000, "minimum": 0}, "nsc_available_capacity_change_perc": {"type": "number", "description": "The percentage change of the available capacity since\nthe last update.\n", "example": -13.2}}, "required": ["average_ops_out", "average_ops_in", "average_pps_out", "average_pps_in", "next_update_at", "created_at", "accuracy", "end", "start", "title"]}, "PeerAggregate": {"title": "PeerAggregate", "type": "object", "description": "PeerStatistics", "properties": {"aggregates": {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/NetworkServiceConfigAggregateStatistics"}, "description": "Aggregated statistics for a connection or service configuration.\n\nFor the **property name** the string representation of the\naggregate interval in ISO8601 period notation is recommended.\n\nFor example: `PT5M`, `P1D`, `P30D`,`P1Y`.\n\nIf a window is defined via the `start` and `end` query parameter,\nthe **property name** will be `custom`.\n\nThe available intervals can differ by implementation.\n", "example": {"PT5M": {"title": "5 Minutes", "accuracy": 1.0, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}, "P30D": {"title": "30 Days", "accuracy": 0.95, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}}}, "peer": {"$ref": "#/components/schemas/Peer"}}, "required": ["peer", "aggregates"]}, "PeerTimeseries": {"title": "PeerTimeseries", "type": "object", "description": "PeerStatistics Timeseries", "properties": {"title": {"type": "string", "description": "Title of the timeseries.\n", "example": "5 Minutes"}, "precision": {"type": "integer", "description": "Precision indicates the sampling rate of the aggregated traffic data\nin seconds.\nFor example if the data is aggregated over 5 minutes, the precision\nwould be 300.\n", "example": 300, "minimum": 0}, "created_at": {"type": "string", "format": "date-time", "description": "Timestamp when the statistics were created."}, "next_update_at": {"type": "string", "format": "date-time", "description": "Next update of the statistical data.\nThis may not correspond to the aggregate interval."}, "origin_timezone": {"type": "string", "description": "The timezone where the data was collected in tz database\nformat.\n", "example": "Europe/Amsterdam"}, "fields": {"type": "array", "items": {"type": "string"}, "description": "The fields used in the samples. They can be explicitly\nselected using the `fields` query parameter. The `timestamp` is\nalways included.\n", "example": ["timestamp", "average_pps_in", "average_pps_out", "average_ops_in", "average_ops_out"]}, "samples": {"type": "array", "items": {"type": "array", "items": {}, "minItems": 1, "example": ["2019-08-24T14:15:22Z", 120302, 42980203, 320302, 84990203]}, "description": "A list of timeseries samples, where samples are n-tuples, where\nthe first element is a timestamp.\n\n* `timestamp` (DateTime, `string`, ISO 8601, Example: `\"2001-10-23T23:42:10Z\"`)\n\nThe other fields can be selected in the `fields` query from the\naggregates. Default fields are:\n\n* `average_pps_in` (`integer`)\n* `average_pps_out` (`integer`)\n* `average_ops_in` (`integer`)\n* `average_ops_out` (`integer`)\n\nMissing values in the timeseries are represented by `null`."}, "peer": {"$ref": "#/components/schemas/Peer"}}, "required": ["peer", "samples", "fields", "origin_timezone", "next_update_at", "created_at", "precision", "title"]}, "PortStatistics": {"title": "PortStatistics", "type": "object", "description": "Port Statistics", "properties": {"aggregates": {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/AggregateStatistics"}, "description": "Aggregated statistics for a connection or service configuration.\n\nFor the **property name** the string representation of the\naggregate interval in ISO8601 period notation is recommended.\n\nFor example: `PT5M`, `P1D`, `P30D`,`P1Y`.\n\nIf a window is defined via the `start` and `end` query parameter,\nthe **property name** will be `custom`.\n\nThe available intervals can differ by implementation.\n", "example": {"PT5M": {"title": "5 Minutes", "accuracy": 1.0, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}, "P30D": {"title": "30 Days", "accuracy": 0.95, "created_at": "2019-08-24T14:15:22Z", "next_update_at": "2019-08-24T14:15:22Z", "average_pps_in": 1730224, "average_pps_out": 17456, "average_ops_in": 1734882240, "average_ops_out": 173220}}}, "light_levels_tx": {"type": "array", "items": {"type": "number"}, "description": "A list of light levels in **dBm** for each channel.\n", "example": [-5.92, -5.29]}, "light_levels_rx": {"type": "array", "items": {"type": "number"}, "description": "A list of light levels in **dBm** for each channel.\n", "example": [-2.92, -3.89]}}, "required": ["light_levels_rx", "light_levels_tx", "aggregates"]}}, "securitySchemes": {"Bearer": {"type": "http", "scheme": "bearer", "bearerFormat": "JWT"}, "OAuth": {"type": "oauth2", "description": "\nThis API uses OAuth 2.\nWe suggest to use the scope: `ix-api` but\nit is up to the implementers to decide the details.\nThis includes what flows to support.\n", "flows": {"implicit": {"scopes": {"ix-api": "access the IX-API"}, "authorizationUrl": "https://auth.example-ix/see-implementation-guide"}, "authorizationCode": {"scopes": {"ix-api": "access the IX-API"}, "authorizationUrl": "https://auth.example-ix/see-implementation-guide", "tokenUrl": "https://auth.example-ix/see-implementation-guide"}, "password": {"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"}}}}}, "tags": [{"name": "accounts", "description": "An `Account` represents an individual customer account, organization\nor partner involved with the IXP. They are used to consume\nservices from an IXP.\n\nAccounts can have a hierarchy, i.e. an\naccount can have sub-accounts. The max-depth of\nthe account-hierarchy may vary by implementer, but it's safe to\nassume an account can have sub-accounts.\n\nEach `Account` has a state. Only `Account`s in state `production`\nor `production_change_pending` are ready to consume services.\n\nThere are `Contact`s associated with each account. Contacts can\nbe assigned for `Role`s via `RoleAssignment`s. Depending on the\nIXP and the services the account wants to use, contacts with\nspecific roles may be required.\nA contact with role `legal` is mandatory for an account to become\noperational.\n\nOnly accounts with `billing_information` present can be used\nas a `billing_account`.\n\n*Sensitive Properties*: Please note, that an `Account` is a shared\nresource and fields marked as *sensitive* should be redacted."}, {"name": "auth", "description": "**DEPRECATION NOTICE:**\nProviding the method of authentication is up to the implementer.\nWe suggest using OAuth 2.\n\nOpen an authorized session with the IX-API. This is equivalent to\na 'login' endpoint.\n\nUpon success, you will receive an `access_token` and\na `refreh_token`. Both are JWTs and have limited lifetimes. You\ncan get information like their expiry time directly by parsing\nthe tokens.\n\nUse the `access_token` as `Bearer` in your `Authorization` header\nfor getting access to the API.\n\nWhen the session (i.e. the `access_token`) expires, use the\n`refresh_token` (if it's not yet expired) with the\n`refresh`-endpoint to reauthenticate and get a fresh `access_token`."}, {"name": "availability-zones", "description": "An `AvailabilityZone` is a grouping of network resources that have\nthe same maintenance scheduling which does not overlap with the\nmaintenance schedule for any other `AvailabilityZone`."}, {"name": "connections", "description": "A `Connection` is a functional group of physical\nports collected together into a LAG (aka trunk).\n\nA `connection` with only one `port` can be also\nconfigured as standalone which means no link aggregation\nis configured on the switch.\n\nPorts will be allocated when creating a connection.\nThe number of ports is determined by the\n`port_quantity` property.\nThe `port_quantity` can be updated later by creating\nnew or deleting `PortReservation`s for this `Connection`."}, {"name": "contacts", "description": "A `Contact` is a role undertaking a specific responsibility\nwithin an account, typically a department or agent of the\ncustomer company.\n\n`Contact`s are assigned multiple roles by `RoleAssignment`s.\n\nA contact is bound to the account by the `consuming_account` property."}, {"name": "devices", "description": "A `Device` is a network hardware device, typically a switch, which\nis located at a specified facility and inside a `PointOfPresence`.\nPoPs.\n\nThey may be physically located at their related PoPs."}, {"name": "extensions", "description": "The extensions endpoint provides information about\nadditional implementation specific extensions that are not\nofficially part of the IX-API standard."}, {"name": "facilities", "description": "A `Facility` is a data centre, with a determined physical address,\nfrom which a defined set of PoPs can be accessed"}, {"name": "health", "description": "This endpoint provides a health status response implementing\nhttps://tools.ietf.org/id/draft-inadarei-api-health-check-04.html\n\nThe schema describes the toplevel fields - however the\nimplementation of health checks is up to the IX-API implementor."}, {"name": "implementation", "description": "This endpoint provides information about the IX-API\nimplementation of the exchange.\n\nYou can find the implemented schema version and\nsupported types and operations here."}, {"name": "ips", "description": "An `IP` is a IPv4 or 6 addresses, with a given validity period.\nSome services require IP addresses to work.\n\nWhen you are joining an `exchange_lan` network service\nfor example, addresses on the peering lan will be assigned\nto you."}, {"name": "macs", "description": "A `MAC` is a MAC addresses with a given validity period.\n\nSome services require MAC addresses to work.\nPlease note that only *unicast* MAC addresses are allowed.\nYou are not alllowed to use multicast or broadcast addresses.\n\nThe address itself can not be updated after creation.\nHowever: It can be expired by changing the `valid_not_before`\nand `valid_not_after` properties.\n\nSetting the above two parameters supports maintenance windows\nin which the MAC addresses overlap for certain period of time.\nThe implementation of the maintenance windows is dependent on\nthe specific exchange. While some IXPs allow them, the business\nof other IXPs may reject them.\n\nIf both values are set `valid_not_after` may not be before\n`valid_not_before`."}, {"name": "member-joining-rules", "description": "A `MemberJoiningRule` defines a rule to allow or deny access for\nan `Account` to a access a `NetworkService`.\n\nFurthermore, some `NetworkService`s may only be visible if the\nquerying account is listed in an allow rule."}, {"name": "metro-area-networks", "description": "Services are provided directly on or can be consumed\nfrom inside a `MetroAreaNetwork`.\n\nAccounts can indicate their presence in a `MetroAreaNetwork`\nto others by adding a list of ids."}, {"name": "metro-areas", "description": "A MetroArea exists if a `MetroAreaNetwork` or `Facility` is\npresent in it."}, {"name": "network-feature-configs", "description": "A `NetworkFeatureConfig` is a configuration for\nusing a `NetworkFeature`.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig needs to be created in order to move\nthe `NetworkServiceConfig` into `production`."}, {"name": "network-features", "description": "A `NetworkFeature` represents additional funcationality of a single\n`NetworkService`.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig needs to be created in order to move\nthe `NetworkServiceConfig` into `production`."}, {"name": "network-service-configs", "description": "A `NetworkServiceConfig` is a customer's configuration for usage\nof a `NetworkService`, e.g. the configuration of a (subset of a)\nconnection for that customer's traffic\n\nThe `type` of the config determines the service you are\nconfiguring.\n\nYou can find the services available to you on the platform,\nby querying the `NetworkService`s resource.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig` needs to be created in order to move\nthe `NetworkServiceConfig` into `production`."}, {"name": "network-services", "description": "A `NetworkService` represents an instance of a `ProductOffering`.\n\nThe exchange lan is a special case in which the `NetworkService` is\nmanaged by the exchange.\n\nAll other `NetworkService`s are created and managed by an `Account`.\n\n*Sensitive Properties*: Please note, that a `NetworkService` may be a shared\nresource and fields marked as *sensitive* should be redacted."}, {"name": "pops", "description": "A `PointOfPresence` is a technical installation within a Facility\nwhich is connected to a single `MetroAreaNetwork`. A single\n`MetroAreaNetwork`, however, may have multiple `PointOfPresence`s."}, {"name": "port-reservations", "description": "A `PortReservation` expresses the intent to include\na `Port` in a connection.\n\nDecommissining a `port-reservation` will lead to the\nremoval of the port from the lag.\n\nPlease note that individual cancellation policies\nmight apply."}, {"name": "ports", "description": "A `Port` is the point at which subscriber and\nIXP networks meet. A port is always associated with\na `device` and `pop`, has a `speed` and a `media_type`."}, {"name": "product-offerings", "description": "A `ProductOffering` is an offer made by an exchange\nto be consumed by a client."}, {"name": "role-assignments", "description": "A `Contact` can be assigned to many `Roles`."}, {"name": "roles", "description": "A `Role` enables a `Contact` to act for a specific purpose.\n\n### Well-defined roles\n\n- `legal` signing terms and conditions for the account as a whole, authorized person allowed to sign on behalf of the company\n- `implementation` technical contact for deployment and de-commissioning\n- `noc` technical contact for troubleshooting the services\n- `peering` contact authorized to accept peering requests\n- `billing` contact that receives invoices\n\nAn implementer may choose to support them or not or may add\nadditional ones."}, {"name": "routing-functions", "description": "Routing functions instances add routing functionality\nimplemented as VPRNs at the IXP.\n\nA routing function instance joins two or more independent services\ninto a single routing domain, providing connectivity between all of\nthe services attached.\n\nTo create routing function, need to select a product offering,\nwhich will determine the service metro area network where\nthe function will be deployed."}], "servers": [{"url": "/api/v2"}], "security": [{"OAuth": ["ix-api"]}, {"Bearer": []}]}