{"openapi": "3.0.0", "info": {"version": "2.3.1", "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\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"}}}}}, "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": "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"}, {"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": "List of: Facility", "content": {"application/json": {"schema": {"type": "array", "items": {"$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"}}}}}, "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": "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": "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": "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"}}}}}, "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": "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"}}}}}, "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": "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"}}}}}, "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}]}}, "/metro-areas/{id}": {"get": {"operationId": "metro_areas_read", "description": "Get a single MetroArea", "tags": ["metro-areas"], "responses": {"200": {"description": "List of: MetroArea", "content": {"application/json": {"schema": {"type": "array", "items": {"$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/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}}}, {}]}}}}, "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": "type", "schema": {"type": "string", "enum": ["connection", "exchange_lan", "p2p_vc", "mp2mp_vc", "p2mp_vc", "cloud_vc"]}, "required": false, "in": "query", "description": "Filter by type"}, {"name": "resource_type", "schema": {"type": "string", "enum": ["connection", "port_reservation", "network_service", "network_service_config"]}, "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": "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": ""}}]}}, "/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"}}}}}, "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": "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": "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": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}, {"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": ""}}]}}, "/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"}}}}}, "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": "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": "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/PortReservationUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "port_reservations_partial_update", "description": "Partially 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"]}, "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`."}}}]}}}}}, "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", "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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"}}}}}, "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": "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": "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_network", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by 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": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}]}, "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/<id>/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": "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/ConnectionUpdate"}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "description": "Get by id", "schema": {"type": "string", "title": "", "description": ""}}]}, "patch": {"operationId": "connections_partial_update", "description": "Partially 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"]}, "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`."}}}]}}}}}, "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}/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}}}, {}]}}}}}, "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", "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}}}, {}]}}}}}, "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"}}}}}, "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": "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": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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": "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/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 parts of 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"]}, "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`."}}}]}}}}}, "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}/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}}}, {}]}}}}}, "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"}}}}}, "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": "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": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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 service_config"}, {"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": "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 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 parts of 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": ""}}]}}, "/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"}}}}}, "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": "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": "Update 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 parts of 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"}}}}}, "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", "schema": {"type": "array", "items": {"type": "string"}, "example": "id1,id2,id3"}, "required": false, "in": "query", "description": "Filter by id", "style": "form", "explode": false}, {"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": ""}}, {"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": "name", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by name"}]}}, "/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"}}}}}, "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": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by managing_account"}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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": "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/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 parts of 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"}}}}}, "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": "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/{assignment_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": "assignment_id", "in": "path", "required": true, "description": "Get by assignment_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": "assignment_id", "in": "path", "required": true, "description": "Get by assignment_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_read", "description": "", "tags": ["extensions"], "responses": {"200": {"description": "List of: Implementation specific API extensions", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ApiExtensions"}}}}}}}}, "/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"}}}}}, "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": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by managing_account"}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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"}}}}}, "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": "Update 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 parts of an ip address.\n\n\nAs with the `PUT` opertaion, IP addresses, where you\ndon't have update rights, will yield a `resource access denied`\nerror when attempting an 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"}}}}}, "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": "managing_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by managing_account"}, {"name": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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": "assigned_at", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by assigned_at"}, {"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"}}}}}, "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": "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": "consuming_account", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by consuming_account"}, {"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": "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 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": "Partially 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"]}, "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`."}}}]}}}}}, "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}/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}}}, {}]}}}}}, "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"}}}}}, "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": "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"}}}}}, "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": "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": "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/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": "Partially 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": ""}}]}}}, "components": {"schemas": {"AuthToken": {"title": "AuthToken", "type": "object", "description": "AuthToken", "properties": {"access_token": {"type": "string"}, "refresh_token": {"type": "string"}}, "required": ["access_token", "refresh_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_key", "api_secret"]}, "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": ["decommission_at", "charged_until"]}, "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."}}}, "CloudNetworkProductOffering": {"title": "CloudNetworkProductOffering", "type": "object", "description": "Cloud Network Product Offering", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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}, "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 description of the partner NNI to the service provider.\n", "example": "pop:127388:LD3", "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}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "provider_vlans", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "service_provider_region", "service_provider_pop", "service_provider_workflow", "delivery_method", "diversity", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "ConnectionProductOffering": {"title": "ConnectionProductOffering", "type": "object", "description": "Connection Product Offering", "properties": {"type": {"type": "string", "example": "connection"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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.", "readOnly": true}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "cross_connect_initiator", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "Device": {"title": "Device", "type": "object", "description": "Device", "properties": {"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."}, "capabilities": {"type": "array", "items": {"$ref": "#/components/schemas/DeviceCapability"}}, "facility": {"type": "string", "description": "Identifier of the facility where the device\nis physically based.", "readOnly": true}, "id": {"type": "string", "maxLength": 80}}, "required": ["name", "pop", "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}}}, "DeviceConnection": {"title": "DeviceConnection", "type": "object", "description": "Device Connection", "properties": {"capacity_max": {"type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647}, "device": {"type": "string"}, "connected_device": {"type": "string"}, "id": {"type": "string", "maxLength": 80}}, "required": ["capacity_max", "device", "connected_device", "id"]}, "ExchangeLanNetworkProductOffering": {"title": "ExchangeLanNetworkProductOffering", "type": "object", "description": "Exchange Lan Network Product Offering", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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}, "exchange_lan_network_service": {"type": "string", "description": "The id of the exchange lan network service."}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "provider_vlans", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "exchange_lan_network_service", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "Facility": {"title": "Facility", "type": "object", "description": "Facility", "properties": {"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`."}, "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}, "id": {"type": "string", "maxLength": 80}}, "required": ["name", "metro_area", "address_country", "address_locality", "address_region", "postal_code", "street_address", "organisation_name", "pops", "id"]}, "MP2MPNetworkProductOffering": {"title": "MP2MPNetworkProductOffering", "type": "object", "description": "MP2MP Network Product Offering", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "provider_vlans", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "MetroArea": {"title": "MetroArea", "type": "object", "description": "MetroArea", "properties": {"id": {"type": "string", "maxLength": 80}, "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."}, "metro_area_networks": {"type": "array", "items": {"type": "string"}, "description": "List of networks in the metro area."}}, "required": ["id", "un_locode", "iata_code", "display_name", "facilities", "metro_area_networks"]}, "MetroAreaNetwork": {"title": "MetroAreaNetwork", "type": "object", "description": "MetroAreaNetwork", "properties": {"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."}, "id": {"type": "string", "maxLength": 80}}, "required": ["name", "metro_area", "service_provider", "pops", "id"]}, "P2MPNetworkProductOffering": {"title": "P2MPNetworkProductOffering", "type": "object", "description": "P2MP Network Product Offering", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "provider_vlans", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "P2PNetworkProductOffering": {"title": "P2PNetworkProductOffering", "type": "object", "description": "P2P Network Product Offering", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "id": {"type": "string", "maxLength": 80}, "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"], "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": "The contract terms informally describe the contract period and\nrenewals.\n", "example": "2 weeks and 1 day, renewing every 37 days afterwards, first 66 days free", "nullable": true}, "notice_period": {"type": "string", "description": "The 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}}, "required": ["id", "name", "display_name", "resource_type", "handover_metro_area_network", "handover_metro_area", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "provider_vlans", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "type"], "allOf": [{"$ref": "#/components/schemas/ProductOffering"}]}, "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`."}, "metro_area_network": {"type": "string"}, "devices": {"type": "array", "items": {"type": "string"}}, "id": {"type": "string", "maxLength": 80}}, "required": ["name", "facility", "metro_area_network", "devices", "id"]}, "ProductOffering": {"title": "ProductOffering", "description": "Polymorphic Product Offering", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ConnectionProductOffering"}, {"$ref": "#/components/schemas/ExchangeLanNetworkProductOffering"}, {"$ref": "#/components/schemas/P2PNetworkProductOffering"}, {"$ref": "#/components/schemas/MP2MPNetworkProductOffering"}, {"$ref": "#/components/schemas/P2MPNetworkProductOffering"}, {"$ref": "#/components/schemas/CloudNetworkProductOffering"}], "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"}}}, "CloudNetworkServiceConfig": {"title": "CloudNetworkServiceConfig", "type": "object", "description": "Cloud Network Service Config", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "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)*"}, "id": {"type": "string", "maxLength": 80}, "network_service": {"type": "string", "description": "The id of the configured network service."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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"}, "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_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\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}}, "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "handover", "cloud_vlan", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}]}, "CloudNetworkServiceConfigPatch": {"title": "CloudNetworkServiceConfigPatch", "type": "object", "description": "Cloud Network Service Config Update", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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_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\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}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "CloudNetworkServiceConfigRequest": {"title": "CloudNetworkServiceConfigRequest", "type": "object", "description": "Cloud Network Service Config Request", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "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."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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"}, "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_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\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}}, "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "handover", "cloud_vlan", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}]}, "CloudNetworkServiceConfigUpdate": {"title": "CloudNetworkServiceConfigUpdate", "type": "object", "description": "Cloud Network Service Config Update", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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_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\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}}, "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "handover", "cloud_vlan", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}]}, "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)*"}, "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"]}, "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`."}, "id": {"type": "string", "maxLength": 80}, "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."}, "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`<pp-identifier>.<hu-identifier>.<slot-identifier>.<port-identifier>`).\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`."}}, "required": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "mode", "product_offering", "id", "name", "pop", "capacity_allocated", "capacity_allocation_limit", "vlan_types", "outer_vlan_ethertypes", "port_quantity"]}, "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)*"}, "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"]}, "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`."}}}, "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)*"}, "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"]}, "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`."}, "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`<pp-identifier>.<hu-identifier>.<slot-identifier>.<port-identifier>`).\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": ["managing_account", "consuming_account", "billing_account", "role_assignments", "mode", "product_offering", "port_quantity"]}, "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)*"}, "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"]}, "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`."}}, "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "mode", "product_offering"]}, "ExchangeLanNetworkServiceConfig": {"title": "ExchangeLanNetworkServiceConfig", "type": "object", "description": "Exchange Lan Network Service Config", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "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)*"}, "id": {"type": "string", "maxLength": 80}, "network_service": {"type": "string", "description": "The id of the configured network service."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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."}, "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.", "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "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."}}, "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "asns", "listed", "product_offering", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}]}, "ExchangeLanNetworkServiceConfigPatch": {"title": "ExchangeLanNetworkServiceConfigPatch", "type": "object", "description": "Exchange Lan Network Service Config Update", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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."}, "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.", "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "ExchangeLanNetworkServiceConfigRequest": {"title": "ExchangeLanNetworkServiceConfigRequest", "type": "object", "description": "Exchange Lan Network Service Config Request", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "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."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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."}, "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.", "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}, "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."}}, "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "asns", "listed", "product_offering", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}]}, "ExchangeLanNetworkServiceConfigUpdate": {"title": "ExchangeLanNetworkServiceConfigUpdate", "type": "object", "description": "Exchange Lan Network Service Config Update", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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."}, "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.", "readOnly": true}, "listed": {"type": "boolean", "description": "The customer wants to be featured on the member list"}}, "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "asns", "listed", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}]}, "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": ["name", "enabled"]}, "MP2MPNetworkServiceConfig": {"title": "MP2MPNetworkServiceConfig", "type": "object", "description": "MP2MP Network Service Config", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "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)*"}, "id": {"type": "string", "maxLength": 80}, "network_service": {"type": "string", "description": "The id of the configured network service."}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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."}, "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.", "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."}}, "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}]}, "MP2MPNetworkServiceConfigPatch": {"title": "MP2MPNetworkServiceConfigPatch", "type": "object", "description": "MP2MP Network Service Config Update", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "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}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation."}, "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.", "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."}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "MP2MPNetworkServiceConfigRequest": {"title": "MP2MPNetworkServiceConfigRequest", "type": "object", "description": "MP2MP Network Service Config Request", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "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."}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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."}, "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.", "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."}}, "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}]}, "MP2MPNetworkServiceConfigUpdate": {"title": "MP2MPNetworkServiceConfigUpdate", "type": "object", "description": "MP2MP Network Service Config Update", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "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}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "macs": {"type": "array", "items": {"type": "string"}, "description": "A list of MAC address IDs. You have to register the\naddress using the `macs_create` operation."}, "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.", "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."}}, "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}]}, "NetworkFeatureConfig": {"title": "NetworkFeatureConfig", "description": "Polymorphic Network Feature Config", "type": "object", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfig"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfig"}}}, "NetworkFeatureConfigPatch": {"title": "NetworkFeatureConfigPatch", "description": "Polymorphic Network Feauture Config Patch", "type": "object", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigPatch"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigPatch"}}}, "NetworkFeatureConfigRequest": {"title": "NetworkFeatureConfigRequest", "description": "Polymorphic Network Feature Config Request", "type": "object", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigRequest"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigRequest"}}}, "NetworkFeatureConfigUpdate": {"title": "NetworkFeatureConfigUpdate", "description": "Polymorphic Network Feauture Config Update", "type": "object", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigUpdate"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigUpdate"}}}, "NetworkServiceConfig": {"title": "NetworkServiceConfig", "description": "Polymorphic Network Service Config", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfig"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfig"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfig"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfig"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfig"}], "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": "Polymorphic Network Service Config", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigPatch"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigPatch"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigPatch"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigPatch"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigPatch"}], "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": "Polymorhic Network Service Config Request", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigRequest"}], "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": "Polymorphic Network Service Config", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigUpdate"}], "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": {"type": {"type": "string", "example": "p2mp_vc"}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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)*"}, "id": {"type": "string", "maxLength": 80}, "network_service": {"type": "string", "description": "The id of the configured network service."}}, "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "state", "id", "network_service", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}]}, "P2MPNetworkServiceConfigPatch": {"title": "P2MPNetworkServiceConfigPatch", "type": "object", "description": "P2MP Network Service Config Update", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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"}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "P2MPNetworkServiceConfigRequest": {"title": "P2MPNetworkServiceConfigRequest", "type": "object", "description": "P2MP Network Service Config Request", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "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."}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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"}}, "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}]}, "P2MPNetworkServiceConfigUpdate": {"title": "P2MPNetworkServiceConfigUpdate", "type": "object", "description": "P2MP Network Service Config Update", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "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`."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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"}}, "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}]}, "P2PNetworkServiceConfig": {"title": "P2PNetworkServiceConfig", "type": "object", "description": "P2P Network Service Config", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "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)*"}, "id": {"type": "string", "maxLength": 80}, "network_service": {"type": "string", "description": "The id of the configured network service."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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`."}, "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}}, "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfig"}]}, "P2PNetworkServiceConfigPatch": {"title": "P2PNetworkServiceConfigPatch", "type": "object", "description": "P2P Network Service Config Update", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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`."}, "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}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigPatch"}]}, "P2PNetworkServiceConfigRequest": {"title": "P2PNetworkServiceConfigRequest", "type": "object", "description": "P2P Network Service Config Request", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "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."}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "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`."}, "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}}, "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigRequest"}]}, "P2PNetworkServiceConfigUpdate": {"title": "P2PNetworkServiceConfigUpdate", "type": "object", "description": "P2P Network Service Config Update", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "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}, "vlan_config": {"$ref": "#/components/schemas/VlanConfig"}, "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)*"}, "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"]}, "connection": {"type": "string", "description": "The id of the connection to use for this `NetworkServiceConfig`."}, "network_feature_configs": {"type": "array", "items": {"type": "string"}, "description": "A list of ids of `NetworkFeatureConfig`s.\n", "example": ["12356", "43829"], "readOnly": true}, "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`."}, "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}}, "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceConfigUpdate"}]}, "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)*"}, "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"]}, "connection": {"type": "string", "nullable": true}, "speed": {"type": "integer", "readOnly": true, "nullable": true, "minimum": 0}, "id": {"type": "string", "maxLength": 80}, "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": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "id", "media_type", "device", "pop"]}, "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}, "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."}, "id": {"type": "string"}, "connection": {"type": "string", "description": "The `Port` will become part of this connection."}, "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.", "nullable": true}}, "required": ["state", "id", "connection"]}, "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}, "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}, "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."}}, "required": ["connection"]}, "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}, "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."}}}, "RouteServerNetworkFeatureConfig": {"title": "RouteServerNetworkFeatureConfig", "type": "object", "description": "Route Server Network Feature Config", "properties": {"type": {"type": "string", "example": "route_server"}, "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)*"}, "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"]}, "network_feature": {"type": "string"}, "network_service_config": {"type": "string"}, "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."}, "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."}, "id": {"type": "string", "maxLength": 80}}, "required": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "network_feature", "network_service_config", "asn", "session_mode", "bgp_session_type", "ip", "id", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfig"}]}, "RouteServerNetworkFeatureConfigPatch": {"title": "RouteServerNetworkFeatureConfigPatch", "type": "object", "description": "Route Server Network Feature Config Update", "properties": {"type": {"type": "string", "example": "route_server"}, "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."}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigPatch"}]}, "RouteServerNetworkFeatureConfigRequest": {"title": "RouteServerNetworkFeatureConfigRequest", "type": "object", "description": "Route Server Network Feature Config Request", "properties": {"type": {"type": "string", "example": "route_server"}, "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)*"}, "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"]}, "network_feature": {"type": "string"}, "network_service_config": {"type": "string"}, "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."}, "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."}}, "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "network_feature", "network_service_config", "asn", "session_mode", "bgp_session_type", "ip", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigRequest"}]}, "RouteServerNetworkFeatureConfigUpdate": {"title": "RouteServerNetworkFeatureConfigUpdate", "type": "object", "description": "Route Server Network Feature Config Update", "properties": {"type": {"type": "string", "example": "route_server"}, "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."}}, "required": ["managing_account", "consuming_account", "asn", "session_mode", "bgp_session_type", "ip", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkFeatureConfigUpdate"}]}, "VLanConfigDot1Q": {"title": "VLanConfigDot1Q", "type": "object", "description": "A Dot1Q vlan configuration", "properties": {"vlan_type": {"type": "string", "example": "dot1q"}, "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"}}, "required": ["vlan_type"], "allOf": [{"$ref": "#/components/schemas/VlanConfig"}]}, "VLanConfigPort": {"title": "VLanConfigPort", "type": "object", "description": "A Port vlan configuration", "properties": {"vlan_type": {"type": "string", "example": "port"}}, "required": ["vlan_type"], "allOf": [{"$ref": "#/components/schemas/VlanConfig"}]}, "VLanConfigQinQ": {"title": "VLanConfigQinQ", "type": "object", "description": "A QinQ vlan configuration", "properties": {"vlan_type": {"type": "string", "example": "dot1q"}, "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}}, "required": ["inner_vlan", "vlan_type"], "allOf": [{"$ref": "#/components/schemas/VlanConfig"}]}, "VlanConfig": {"title": "VlanConfig", "description": "The vlan configuration defines how the service\nis made available on the connection.", "type": "object", "oneOf": [{"$ref": "#/components/schemas/VLanConfigDot1Q"}, {"$ref": "#/components/schemas/VLanConfigQinQ"}, {"$ref": "#/components/schemas/VLanConfigPort"}], "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"}}, "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"]}, "id": {"type": "string", "maxLength": 80}, "address": {"$ref": "#/components/schemas/Address"}}, "required": ["name", "metro_area_network_presence", "id"]}, "AccountPatch": {"title": "AccountPatch", "type": "object", "description": "Account Update", "properties": {"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": {"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", "default": [], "example": ["14021", "12939"]}, "address": {"$ref": "#/components/schemas/Address"}}, "required": ["name", "address"]}, "AccountUpdate": {"title": "AccountUpdate", "type": "object", "description": "Account Update", "properties": {"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": ["name", "metro_area_network_presence", "address"]}, "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": ["country", "locality", "postal_code", "street_address"]}, "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": ["name", "address"]}, "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}, "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}, "id": {"type": "string"}}, "required": ["managing_account", "consuming_account", "id"]}, "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}, "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}, "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": ["managing_account", "consuming_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}, "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": ["managing_account", "consuming_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"}}, "required": ["name", "required_fields", "id"]}, "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"}}, "required": ["role", "contact", "id"]}, "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": ["role", "contact"]}, "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": ["role", "contact"]}, "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": ["name", "required_fields"]}, "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": ["name", "required_fields"]}, "Event": {"title": "Event", "type": "object", "description": "Event", "properties": {"serial": {"type": "integer"}, "account": {"type": "string", "readOnly": true}, "type": {"type": "string"}, "payload": {"type": "object"}, "timestamp": {"type": "string", "format": "date-time"}}, "required": ["serial", "type", "payload", "timestamp"]}, "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": ["severity", "tag", "message", "timestamp"]}, "ApiExtensions": {"title": "ApiExtensions", "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": ["name", "publisher", "documentation_url", "base_url", "spec_url"]}, "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"]}}, "required": ["schema_version", "supported_network_service_types", "supported_network_service_config_types", "supported_network_feature_types", "supported_network_feature_config_types", "supported_operations"]}, "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}, "version": {"type": "integer", "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}, "id": {"type": "string", "maxLength": 80}}, "required": ["managing_account", "consuming_account", "version", "address", "prefix_length", "id"]}, "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}, "version": {"type": "integer", "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}, "version": {"type": "integer", "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": ["managing_account", "consuming_account", "version", "address", "prefix_length"]}, "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}, "version": {"type": "integer", "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": ["managing_account", "consuming_account", "version", "address", "prefix_length"]}, "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}, "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", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}, "id": {"type": "string", "maxLength": 80}}, "required": ["managing_account", "consuming_account", "address", "id"]}, "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}, "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", "nullable": true}, "valid_not_after": {"type": "string", "format": "date-time", "nullable": true}}, "required": ["managing_account", "consuming_account", "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": ["resource_type", "resource_id", "resource_property", "remote_resource_type", "remote_resource_id"]}, "ProblemResponse": {"title": "ProblemResponse", "type": "object", "description": "Encodes a problem into an appropriate response body.", "properties": {"type": {"type": "string", "description": "A URI reference (see RFC3986) that identifies the\nproblem type.\n\nThis specification encourages that, when\ndereferenced, it provide human-readable documentation\nfor the problem type (e.g., using HTML\n[W3C.REC-html5-20141028]).\n\nWhen this member is not present, its value is assumed\nto be \"about:blank\".\n", "example": "about:blank"}, "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": ["name", "reason"]}, "AllowMemberJoiningRule": {"title": "AllowMemberJoiningRule", "type": "object", "description": "A rule for members joining a private vlan", "properties": {"type": {"type": "string", "example": "allow"}, "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"}, "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}, "id": {"type": "string"}, "network_service": {"type": "string"}}, "required": ["managing_account", "consuming_account", "id", "network_service", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRule"}]}, "AllowMemberJoiningRulePatch": {"title": "AllowMemberJoiningRulePatch", "type": "object", "description": "A vlan member joining rule update", "properties": {"type": {"type": "string", "example": "allow"}, "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"}, "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}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRulePatch"}]}, "AllowMemberJoiningRuleRequest": {"title": "AllowMemberJoiningRuleRequest", "type": "object", "description": "A new vlan member joining rule", "properties": {"type": {"type": "string", "example": "allow"}, "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"}, "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"}}, "required": ["managing_account", "consuming_account", "network_service", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleRequest"}]}, "AllowMemberJoiningRuleUpdate": {"title": "AllowMemberJoiningRuleUpdate", "type": "object", "description": "A vlan member joining rule update", "properties": {"type": {"type": "string", "example": "allow"}, "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"}, "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}}, "required": ["managing_account", "consuming_account", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleUpdate"}]}, "CloudNetworkService": {"title": "CloudNetworkService", "type": "object", "description": "Cloud Network Service", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "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"}, "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.", "readOnly": true}, "product_offering": {"type": "string"}, "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)*"}, "cloud_key": {"type": "string"}, "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}}, "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "cloud_key", "diversity", "provider_ref", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkService"}]}, "CloudNetworkServicePatch": {"title": "CloudNetworkServicePatch", "type": "object", "description": "Cloud Network Service Update", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "product_offering": {"type": "string"}, "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)*"}, "cloud_key": {"type": "string"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "CloudNetworkServiceRequest": {"title": "CloudNetworkServiceRequest", "type": "object", "description": "Cloud Network Service Request", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "product_offering": {"type": "string"}, "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)*"}, "cloud_key": {"type": "string"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "cloud_key", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}]}, "CloudNetworkServiceUpdate": {"title": "CloudNetworkServiceUpdate", "type": "object", "description": "Cloud Network Service Update", "properties": {"type": {"type": "string", "example": "cloud_vc"}, "product_offering": {"type": "string"}, "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)*"}, "cloud_key": {"type": "string"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "cloud_key", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}]}, "DenyMemberJoiningRule": {"title": "DenyMemberJoiningRule", "type": "object", "description": "A rule for members joining a private vlan", "properties": {"type": {"type": "string", "example": "deny"}, "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"}, "network_service": {"type": "string"}}, "required": ["managing_account", "consuming_account", "id", "network_service", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRule"}]}, "DenyMemberJoiningRulePatch": {"title": "DenyMemberJoiningRulePatch", "type": "object", "description": "A vlan member joining rule update", "properties": {"type": {"type": "string", "example": "deny"}, "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"}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRulePatch"}]}, "DenyMemberJoiningRuleRequest": {"title": "DenyMemberJoiningRuleRequest", "type": "object", "description": "A new vlan member joining rule", "properties": {"type": {"type": "string", "example": "deny"}, "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"}}, "required": ["managing_account", "consuming_account", "network_service", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleRequest"}]}, "DenyMemberJoiningRuleUpdate": {"title": "DenyMemberJoiningRuleUpdate", "type": "object", "description": "A vlan member joining rule update", "properties": {"type": {"type": "string", "example": "deny"}, "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"}}, "required": ["managing_account", "consuming_account", "type"], "allOf": [{"$ref": "#/components/schemas/MemberJoiningRuleUpdate"}]}, "ExchangeLanNetworkService": {"title": "ExchangeLanNetworkService", "type": "object", "description": "Exchange Lan Network Service", "properties": {"type": {"type": "string", "example": "exchange_lan"}, "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"}, "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.", "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}, "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"}}, "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*"}}, "required": ["state", "id", "managing_account", "consuming_account", "name", "metro_area_network", "network_features", "subnet_v4", "subnet_v6", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkService"}]}, "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": ["name", "description", "mandatory"]}, "MP2MPNetworkService": {"title": "MP2MPNetworkService", "type": "object", "description": "MP2MP Network Service", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "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"}, "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.", "readOnly": true}, "product_offering": {"type": "string"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering`s which can be used in the\nnetwork service configs for this service."}, "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)*"}, "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"}}, "network_features": {"type": "array", "items": {"type": "string"}}, "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."}}, "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "member_joining_rules", "network_features", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkService"}]}, "MP2MPNetworkServicePatch": {"title": "MP2MPNetworkServicePatch", "type": "object", "description": "MP2MP Network Service Update", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "MP2MPNetworkServiceRequest": {"title": "MP2MPNetworkServiceRequest", "type": "object", "description": "MP2MP Network Service Request", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}]}, "MP2MPNetworkServiceUpdate": {"title": "MP2MPNetworkServiceUpdate", "type": "object", "description": "MP2MP Network Service Update", "properties": {"type": {"type": "string", "example": "mp2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}]}, "MemberJoiningRule": {"title": "MemberJoiningRule", "description": "Polymorphic Member Joining Rule", "type": "object", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRule"}, {"$ref": "#/components/schemas/DenyMemberJoiningRule"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRule", "deny": "#/components/schemas/DenyMemberJoiningRule"}}}, "MemberJoiningRulePatch": {"title": "MemberJoiningRulePatch", "description": "Polymorphic Member Joining Rule Update", "type": "object", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRulePatch"}, {"$ref": "#/components/schemas/DenyMemberJoiningRulePatch"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRulePatch", "deny": "#/components/schemas/DenyMemberJoiningRulePatch"}}}, "MemberJoiningRuleRequest": {"title": "MemberJoiningRuleRequest", "description": "Polymorphic Member Joining Rule Request", "type": "object", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleRequest"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleRequest"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleRequest", "deny": "#/components/schemas/DenyMemberJoiningRuleRequest"}}}, "MemberJoiningRuleUpdate": {"title": "MemberJoiningRuleUpdate", "description": "Polymorphic Member Joining Rule Update", "type": "object", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleUpdate"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleUpdate"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleUpdate", "deny": "#/components/schemas/DenyMemberJoiningRuleUpdate"}}}, "NetworkFeature": {"title": "NetworkFeature", "description": "Polymorphic Network Feature", "type": "object", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeature"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeature"}}}, "NetworkService": {"title": "NetworkService", "description": "Polymorphic Network Services", "type": "object", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkService"}, {"$ref": "#/components/schemas/P2PNetworkService"}, {"$ref": "#/components/schemas/P2MPNetworkService"}, {"$ref": "#/components/schemas/MP2MPNetworkService"}, {"$ref": "#/components/schemas/CloudNetworkService"}], "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."}, "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": "Polymorphic Network Service Request", "type": "object", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkService"}, {"$ref": "#/components/schemas/P2MPNetworkService"}, {"$ref": "#/components/schemas/MP2MPNetworkService"}, {"$ref": "#/components/schemas/CloudNetworkService"}], "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": "Polymorphic Network Service Patch", "type": "object", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkServicePatch"}, {"$ref": "#/components/schemas/P2MPNetworkServicePatch"}, {"$ref": "#/components/schemas/MP2MPNetworkServicePatch"}, {"$ref": "#/components/schemas/CloudNetworkServicePatch"}], "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": "Polymorphic Network Service Request", "type": "object", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkServiceRequest"}, {"$ref": "#/components/schemas/P2MPNetworkServiceRequest"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceRequest"}, {"$ref": "#/components/schemas/CloudNetworkServiceRequest"}], "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": "Polymorphic Network Service Update", "type": "object", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkServiceUpdate"}, {"$ref": "#/components/schemas/P2MPNetworkServiceUpdate"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceUpdate"}, {"$ref": "#/components/schemas/CloudNetworkServiceUpdate"}], "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": {"type": {"type": "string", "example": "p2mp_vc"}, "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"}, "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.", "readOnly": true}, "product_offering": {"type": "string"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering`s which can be used in the\nnetwork service configs for this service."}, "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)*"}, "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"}}, "member_joining_rules": {"type": "array", "items": {"type": "string"}}}, "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "network_features", "member_joining_rules", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkService"}]}, "P2MPNetworkServicePatch": {"title": "P2MPNetworkServicePatch", "type": "object", "description": "P2MP Network Service Update", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "P2MPNetworkServiceRequest": {"title": "P2MPNetworkServiceRequest", "type": "object", "description": "P2MP Network Service Request", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}]}, "P2MPNetworkServiceUpdate": {"title": "P2MPNetworkServiceUpdate", "type": "object", "description": "P2MP Network Service Update", "properties": {"type": {"type": "string", "example": "p2mp_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}]}, "P2PNetworkService": {"title": "P2PNetworkService", "type": "object", "description": "P2P Network Service", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "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"}, "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.", "readOnly": true}, "product_offering": {"type": "string"}, "nsc_product_offerings": {"type": "array", "items": {"type": "string"}, "description": "An optional list of `ProductOffering`s which can be used in the\nnetwork service configs for this service."}, "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)*"}, "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"}, "capacity": {"type": "integer", "description": "The capacity of the service in Mbps. When null,\nthe maximum capacity will be used.", "nullable": true, "minimum": 1}}, "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "joining_member_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkService"}]}, "P2PNetworkServicePatch": {"title": "P2PNetworkServicePatch", "type": "object", "description": "P2P Network Service Update", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["type"], "allOf": [{"$ref": "#/components/schemas/NetworkServicePatch"}]}, "P2PNetworkServiceRequest": {"title": "P2PNetworkServiceRequest", "type": "object", "description": "P2P Network Service Request", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "joining_member_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceRequest"}]}, "P2PNetworkServiceUpdate": {"title": "P2PNetworkServiceUpdate", "type": "object", "description": "P2P Network Service Update", "properties": {"type": {"type": "string", "example": "p2p_vc"}, "product_offering": {"type": "string"}, "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)*"}, "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"}}, "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "joining_member_account", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkServiceUpdate"}]}, "RouteServerNetworkFeature": {"title": "RouteServerNetworkFeature", "type": "object", "description": "Route Server Network Feature", "properties": {"type": {"type": "string", "example": "route_server"}, "id": {"type": "string"}, "name": {"type": "string", "maxLength": 80}, "required": {"type": "boolean"}, "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.", "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."}, "network_service": {"type": "string"}, "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"}}, "required": ["id", "name", "required", "flags", "network_service", "asn", "fqdn", "address_families", "session_mode", "available_bgp_session_types", "type"], "allOf": [{"$ref": "#/components/schemas/NetworkFeature"}]}}, "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": "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."}, {"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."}], "servers": [{"url": "/api/v2"}], "security": [{"OAuth": ["ix-api"]}, {"Bearer": []}]}