{"openapi": "3.0.0", "info": {"version": "2.1.2", "title": "IX-API", "description": "\nThis API allows to config/change/delete Internet Exchange services.\n\n# Filters\n\nWhen querying collections, the provided query parameters\nare validated. Unknown query parameters are ignored.\nProviding invalid filter values should yield a validation error.\n", "contact": {"url": "https://ix-api.net"}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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/ProductOfferingPartial"}}}}}, "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}}}, {}]}}}}}, "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": ["exchange_lan", "p2p_vc", "mp2mp_vc", "p2mp_vc", "cloud_vc"]}, "required": false, "in": "query", "description": "Filter by 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": "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", "true"]}, "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}}}, {}]}}}}}, "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": ""}}]}}, "/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}}}, {}]}}}}}, "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": "external_ref", "schema": {"type": "string"}, "required": false, "in": "query", "description": "Filter by external_ref"}]}}, "/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": ""}}]}}, "/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}}}, {}]}}}}}, "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"}]}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Polymorphic Network Service Config", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkServiceConfigUpdatePartial"}}}}, "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}}}, {}]}}}}}, "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"}]}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Polymorphic Network Feauture Config Update", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkFeatureConfigUpdatePartial"}}}}, "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.", "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Account Update Request", "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}}}, {}]}}}}}, "requestBody": {"description": "Account Update Request", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/AccountUpdatePartial"}}}}, "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}}}, {}]}}}}}, "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: A 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": "A 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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "A contact creation 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}}}, {}]}}}}}, "requestBody": {"description": "A contact creation request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ContactRequest"}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "A contact creation request", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/ContactRequestPartial"}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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/HealthResponse"}}}}}}}, "/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/ImplementationResponse"}}}}}}}, "/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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "IP-Address Update", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/IpAddressUpdatePartial"}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Polymorphic Network Service Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkServiceRequest"}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Polymorphic Network Service Request", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/NetworkServiceRequestPartial"}}}}, "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\nA participant in a network service of type\n`p2p_vc` can issue a change request, expressing a\ndesired change in the capacity.\nThe change is accepted when all sides have configured\nthe network service configs with the new bandwidth.\nThese changes can sometimes require a change of the\nproduct offering.\nThe product offering may only differ in regards to\nbandwidth.\n\nThe network service will change it's state from `production`\ninto `production_change_pending`.\n\nOnly one change request may be issued at a time.", "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "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}}}, {}]}}}}}, "requestBody": {"description": "Polymorphic Member Joining Rule Update", "content": {"application/merge-patch+json": {"schema": {"$ref": "#/components/schemas/MemberJoiningRuleUpdatePartial"}}}}, "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": {"allOf": [{"$ref": "#/components/schemas/AuthTokenPartial"}, {"title": "AuthToken", "type": "object", "required": ["access_token", "refresh_token"]}]}, "AuthTokenPartial": {"title": "PartialAuthToken", "type": "object", "description": "AuthToken", "properties": {"access_token": {"type": "string"}, "refresh_token": {"type": "string"}}}, "AuthTokenRequest": {"allOf": [{"$ref": "#/components/schemas/AuthTokenRequestPartial"}, {"title": "AuthTokenRequest", "type": "object", "required": ["api_key", "api_secret"]}]}, "AuthTokenRequestPartial": {"title": "PartialAuthTokenRequest", "type": "object", "description": "AuthTokenRequest", "properties": {"api_key": {"type": "string", "minLength": 16, "maxLength": 16}, "api_secret": {"type": "string", "minLength": 86, "maxLength": 86}}}, "RefreshTokenRequest": {"allOf": [{"$ref": "#/components/schemas/RefreshTokenRequestPartial"}, {"title": "RefreshTokenRequest", "type": "object", "required": ["refresh_token"]}]}, "RefreshTokenRequestPartial": {"title": "PartialRefreshTokenRequest", "type": "object", "description": "RefreshTokenRequest", "properties": {"refresh_token": {"type": "string"}}}, "Cancelable": {"allOf": [{"$ref": "#/components/schemas/CancelablePartial"}, {"title": "Cancelable", "type": "object"}]}, "CancelablePartial": {"title": "PartialCancelable", "type": "object", "description": "Service or config can be canceled", "properties": {"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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}}}, "CancellationPolicy": {"allOf": [{"$ref": "#/components/schemas/CancellationPolicyPartial"}, {"title": "CancellationPolicy", "type": "object", "required": ["decommission_at", "charged_until"]}]}, "CancellationPolicyPartial": {"title": "PartialCancellationPolicy", "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`."}}}, "CancellationRequest": {"allOf": [{"$ref": "#/components/schemas/CancellationRequestPartial"}, {"title": "CancellationRequest", "type": "object"}]}, "CancellationRequestPartial": {"title": "PartialCancellationRequest", "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": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkProductOfferingPartial"}, {"title": "CloudNetworkProductOffering", "type": "object", "required": ["id", "name", "display_name", "provider_vlans", "resource_type", "handover_metro_area_network", "handover_metro_area", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "service_provider_region", "service_provider_pop", "service_provider_workflow", "delivery_method", "diversity", "type"]}]}, "CloudNetworkProductOfferingPartial": {"title": "PartialCloudNetworkProductOffering", "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}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "resource_type": {"type": "string", "enum": ["connection", "demarc", "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", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n", "example": "met:29381993:NYC"}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\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}, "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."}, "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\nservice provider.\n", "example": "INX6", "nullable": true, "maxLength": 16}, "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": ["type"]}, "Device": {"allOf": [{"$ref": "#/components/schemas/DevicePartial"}, {"title": "Device", "type": "object", "required": ["name", "pop", "id"]}]}, "DevicePartial": {"title": "PartialDevice", "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}}}, "DeviceCapability": {"allOf": [{"$ref": "#/components/schemas/DeviceCapabilityPartial"}, {"title": "DeviceCapability", "type": "object"}]}, "DeviceCapabilityPartial": {"title": "PartialDeviceCapability", "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": {"allOf": [{"$ref": "#/components/schemas/DeviceConnectionPartial"}, {"title": "DeviceConnection", "type": "object", "required": ["capacity_max", "device", "connected_device", "id"]}]}, "DeviceConnectionPartial": {"title": "PartialDeviceConnection", "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}}}, "ExchangeLanNetworkProductOffering": {"allOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkProductOfferingPartial"}, {"title": "ExchangeLanNetworkProductOffering", "type": "object", "required": ["id", "name", "display_name", "provider_vlans", "resource_type", "handover_metro_area_network", "handover_metro_area", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "exchange_lan_network_service", "type"]}]}, "ExchangeLanNetworkProductOfferingPartial": {"title": "PartialExchangeLanNetworkProductOffering", "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}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "resource_type": {"type": "string", "enum": ["connection", "demarc", "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", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n", "example": "met:29381993:NYC"}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\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}, "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."}, "exchange_lan_network_service": {"type": "string", "description": "The id of the exchange lan network service."}}, "required": ["type"]}, "Facility": {"allOf": [{"$ref": "#/components/schemas/FacilityPartial"}, {"title": "Facility", "type": "object", "required": ["name", "metro_area", "address_country", "address_locality", "address_region", "postal_code", "street_address", "organisation_name", "pops", "id"]}]}, "FacilityPartial": {"title": "PartialFacility", "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 in the `Facility`."}, "id": {"type": "string", "maxLength": 80}}}, "MP2MPNetworkProductOffering": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkProductOfferingPartial"}, {"title": "MP2MPNetworkProductOffering", "type": "object", "required": ["id", "name", "display_name", "provider_vlans", "resource_type", "handover_metro_area_network", "handover_metro_area", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "type"]}]}, "MP2MPNetworkProductOfferingPartial": {"title": "PartialMP2MPNetworkProductOffering", "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}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "resource_type": {"type": "string", "enum": ["connection", "demarc", "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", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n", "example": "met:29381993:NYC"}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\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}, "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."}}, "required": ["type"]}, "MetroArea": {"allOf": [{"$ref": "#/components/schemas/MetroAreaPartial"}, {"title": "MetroArea", "type": "object", "required": ["id", "un_locode", "iata_code", "display_name", "facilities", "metro_area_networks"]}]}, "MetroAreaPartial": {"title": "PartialMetroArea", "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."}}}, "MetroAreaNetwork": {"allOf": [{"$ref": "#/components/schemas/MetroAreaNetworkPartial"}, {"title": "MetroAreaNetwork", "type": "object", "required": ["name", "metro_area", "service_provider", "pops", "id"]}]}, "MetroAreaNetworkPartial": {"title": "PartialMetroAreaNetwork", "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}}}, "P2MPNetworkProductOffering": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkProductOfferingPartial"}, {"title": "P2MPNetworkProductOffering", "type": "object", "required": ["id", "name", "display_name", "provider_vlans", "resource_type", "handover_metro_area_network", "handover_metro_area", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "type"]}]}, "P2MPNetworkProductOfferingPartial": {"title": "PartialP2MPNetworkProductOffering", "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}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "resource_type": {"type": "string", "enum": ["connection", "demarc", "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", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n", "example": "met:29381993:NYC"}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\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}, "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."}}, "required": ["type"]}, "P2PNetworkProductOffering": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkProductOfferingPartial"}, {"title": "P2PNetworkProductOffering", "type": "object", "required": ["id", "name", "display_name", "provider_vlans", "resource_type", "handover_metro_area_network", "handover_metro_area", "service_metro_area_network", "service_metro_area", "bandwidth_min", "bandwidth_max", "physical_port_speed", "service_provider", "downgrade_allowed", "upgrade_allowed", "type"]}]}, "P2PNetworkProductOfferingPartial": {"title": "PartialP2PNetworkProductOffering", "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}, "provider_vlans": {"type": "string", "enum": ["single", "multi"], "description": "The `NetworkService` provides `single` or `multi`ple vlans."}, "resource_type": {"type": "string", "enum": ["connection", "demarc", "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", "example": "191239810"}, "handover_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The network service will be\naccessed from this metro area.\n", "example": "met:29381993:NYC"}, "service_metro_area_network": {"type": "string", "description": "Id of the `MetroAreaNetwork`.\nThe service is directly provided on the metro area network.\n", "example": "9123843"}, "service_metro_area": {"type": "string", "description": "Id of the `MetroArea`. The service is delivered\nin this metro area.\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}, "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."}}, "required": ["type"]}, "PointOfPresence": {"allOf": [{"$ref": "#/components/schemas/PointOfPresencePartial"}, {"title": "PointOfPresence", "type": "object", "required": ["name", "facility", "metro_area_network", "devices", "id"]}]}, "PointOfPresencePartial": {"title": "PartialPointOfPresence", "type": "object", "description": "Point Of Presence", "properties": {"name": {"type": "string", "maxLength": 40}, "facility": {"type": "string"}, "metro_area_network": {"type": "string"}, "devices": {"type": "array", "items": {"type": "string"}}, "id": {"type": "string", "maxLength": 80}}}, "ProductOffering": {"title": "ProductOffering", "description": "Polymorphic Product Offering", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkProductOffering"}, {"$ref": "#/components/schemas/P2PNetworkProductOffering"}, {"$ref": "#/components/schemas/MP2MPNetworkProductOffering"}, {"$ref": "#/components/schemas/P2MPNetworkProductOffering"}, {"$ref": "#/components/schemas/CloudNetworkProductOffering"}], "discriminator": {"propertyName": "type", "mapping": {"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"}}}, "ProductOfferingPartial": {"title": "ProductOffering (partial)", "description": "Polymorphic Product Offering", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkProductOfferingPartial"}, {"$ref": "#/components/schemas/P2PNetworkProductOfferingPartial"}, {"$ref": "#/components/schemas/MP2MPNetworkProductOfferingPartial"}, {"$ref": "#/components/schemas/P2MPNetworkProductOfferingPartial"}, {"$ref": "#/components/schemas/CloudNetworkProductOfferingPartial"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkProductOfferingPartial", "p2p_vc": "#/components/schemas/P2PNetworkProductOfferingPartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkProductOfferingPartial", "p2mp_vc": "#/components/schemas/P2MPNetworkProductOfferingPartial", "cloud_vc": "#/components/schemas/CloudNetworkProductOfferingPartial"}}}, "CloudNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkServiceConfigPartial"}, {"title": "CloudNetworkServiceConfig", "type": "object", "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "handover", "cloud_vlan", "type"]}]}, "CloudNetworkServiceConfigPartial": {"title": "PartialCloudNetworkServiceConfig", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "CloudNetworkServiceConfigRequest": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkServiceConfigRequestPartial"}, {"title": "CloudNetworkServiceConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "handover", "cloud_vlan", "type"]}]}, "CloudNetworkServiceConfigRequestPartial": {"title": "PartialCloudNetworkServiceConfigRequest", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "CloudNetworkServiceConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkServiceConfigUpdatePartial"}, {"title": "CloudNetworkServiceConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "handover", "cloud_vlan", "type"]}]}, "CloudNetworkServiceConfigUpdatePartial": {"title": "PartialCloudNetworkServiceConfigUpdate", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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"]}, "Connection": {"allOf": [{"$ref": "#/components/schemas/ConnectionPartial"}, {"title": "Connection", "type": "object", "required": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "mode", "id", "name", "vlan_types", "outer_vlan_ethertypes"]}]}, "ConnectionPartial": {"title": "PartialConnection", "type": "object", "description": "Connection", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled"]}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "speed": {"type": "integer", "description": "Shows the total bandwidth of the connection in Mbit/s.\n", "example": 20000, "nullable": true, "minimum": 0}, "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"]}, "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"]}}}, "ConnectionRequest": {"allOf": [{"$ref": "#/components/schemas/ConnectionRequestPartial"}, {"title": "ConnectionRequest", "type": "object", "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "mode"]}]}, "ConnectionRequestPartial": {"title": "PartialConnectionRequest", "type": "object", "description": "Connection 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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "speed": {"type": "integer", "description": "Shows the total bandwidth of the connection in Mbit/s.\n", "example": 20000, "nullable": true, "minimum": 0}}}, "ConnectionUpdate": {"allOf": [{"$ref": "#/components/schemas/ConnectionUpdatePartial"}, {"title": "ConnectionUpdate", "type": "object", "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "mode"]}]}, "ConnectionUpdatePartial": {"title": "PartialConnectionUpdate", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "speed": {"type": "integer", "description": "Shows the total bandwidth of the connection in Mbit/s.\n", "example": 20000, "nullable": true, "minimum": 0}}}, "EVPNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/EVPNetworkServiceConfigPartial"}, {"title": "EVPNetworkServiceConfig", "type": "object"}]}, "EVPNetworkServiceConfigPartial": {"title": "PartialEVPNetworkServiceConfig", "type": "object", "description": "Ethernet Virtual Private Network Service Config", "properties": {"product_offering": {"type": "string", "description": "An optional id of a `ProductOffering`.\n\nValid ids of product-offerings can be found in the\n`nsc_product_offerings` property of the `NetworkService`."}}}, "ExchangeLanNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigPartial"}, {"title": "ExchangeLanNetworkServiceConfig", "type": "object", "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "asns", "listed", "product_offering", "type"]}]}, "ExchangeLanNetworkServiceConfigPartial": {"title": "PartialExchangeLanNetworkServiceConfig", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "ExchangeLanNetworkServiceConfigRequest": {"allOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial"}, {"title": "ExchangeLanNetworkServiceConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "asns", "listed", "product_offering", "type"]}]}, "ExchangeLanNetworkServiceConfigRequestPartial": {"title": "PartialExchangeLanNetworkServiceConfigRequest", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "ExchangeLanNetworkServiceConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial"}, {"title": "ExchangeLanNetworkServiceConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "asns", "listed", "type"]}]}, "ExchangeLanNetworkServiceConfigUpdatePartial": {"title": "PartialExchangeLanNetworkServiceConfigUpdate", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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"]}, "MP2MPNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkServiceConfigPartial"}, {"title": "MP2MPNetworkServiceConfig", "type": "object", "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "MP2MPNetworkServiceConfigPartial": {"title": "PartialMP2MPNetworkServiceConfig", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "MP2MPNetworkServiceConfigRequest": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkServiceConfigRequestPartial"}, {"title": "MP2MPNetworkServiceConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "MP2MPNetworkServiceConfigRequestPartial": {"title": "PartialMP2MPNetworkServiceConfigRequest", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "MP2MPNetworkServiceConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkServiceConfigUpdatePartial"}, {"title": "MP2MPNetworkServiceConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "type"]}]}, "MP2MPNetworkServiceConfigUpdatePartial": {"title": "PartialMP2MPNetworkServiceConfigUpdate", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "NetworkFeatureConfig": {"title": "NetworkFeatureConfig", "description": "Polymorphic Network Feature Config", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfig"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfig"}}}, "NetworkFeatureConfigPartial": {"title": "NetworkFeatureConfig (partial)", "description": "Polymorphic Network Feature Config", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigPartial"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigPartial"}}}, "NetworkFeatureConfigRequest": {"title": "NetworkFeatureConfigRequest", "description": "Polymorphic Network Feature Config Request", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigRequest"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigRequest"}}}, "NetworkFeatureConfigRequestPartial": {"title": "NetworkFeatureConfigRequest (partial)", "description": "Polymorphic Network Feature Config Request", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial"}}}, "NetworkFeatureConfigUpdate": {"title": "NetworkFeatureConfigUpdate", "description": "Polymorphic Network Feauture Config Update", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigUpdate"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigUpdate"}}}, "NetworkFeatureConfigUpdatePartial": {"title": "NetworkFeatureConfigUpdate (partial)", "description": "Polymorphic Network Feauture Config Update", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial"}}}, "NetworkServiceConfig": {"title": "NetworkServiceConfig", "description": "Polymorphic Network Service Config", "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"}}}, "NetworkServiceConfigPartial": {"title": "NetworkServiceConfig (partial)", "description": "Polymorphic Network Service Config", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigPartial"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigPartial"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigPartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigPartial"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigPartial"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigPartial", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigPartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigPartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigPartial", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigPartial"}}}, "NetworkServiceConfigRequest": {"title": "NetworkServiceConfigRequest", "description": "Polymorhic Network Service Config Request", "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"}}}, "NetworkServiceConfigRequestPartial": {"title": "NetworkServiceConfigRequest (partial)", "description": "Polymorhic Network Service Config Request", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigRequestPartial"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigRequestPartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigRequestPartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigRequestPartial", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigRequestPartial"}}}, "NetworkServiceConfigUpdate": {"title": "NetworkServiceConfigUpdate", "description": "Polymorphic Network Service Config", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigUpdate"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigRequest"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigUpdate"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdate", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigUpdate", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigRequest", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigRequest", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigUpdate"}}}, "NetworkServiceConfigUpdatePartial": {"title": "NetworkServiceConfigUpdate (partial)", "description": "Polymorphic Network Service Config", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial"}, {"$ref": "#/components/schemas/P2PNetworkServiceConfigUpdatePartial"}, {"$ref": "#/components/schemas/P2MPNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceConfigRequestPartial"}, {"$ref": "#/components/schemas/CloudNetworkServiceConfigUpdatePartial"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial", "p2p_vc": "#/components/schemas/P2PNetworkServiceConfigUpdatePartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceConfigRequestPartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceConfigRequestPartial", "cloud_vc": "#/components/schemas/CloudNetworkServiceConfigUpdatePartial"}}}, "P2MPNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkServiceConfigPartial"}, {"title": "P2MPNetworkServiceConfig", "type": "object", "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "P2MPNetworkServiceConfigPartial": {"title": "PartialP2MPNetworkServiceConfig", "type": "object", "description": "P2MP Network Service Config", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "P2MPNetworkServiceConfigRequest": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkServiceConfigRequestPartial"}, {"title": "P2MPNetworkServiceConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "P2MPNetworkServiceConfigRequestPartial": {"title": "PartialP2MPNetworkServiceConfigRequest", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "P2MPNetworkServiceConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkServiceConfigUpdatePartial"}, {"title": "P2MPNetworkServiceConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "type"]}]}, "P2MPNetworkServiceConfigUpdatePartial": {"title": "PartialP2MPNetworkServiceConfigUpdate", "type": "object", "description": "P2MP Network Service Config Update", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"]}, "P2PNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkServiceConfigPartial"}, {"title": "P2PNetworkServiceConfig", "type": "object", "required": ["state", "id", "network_service", "managing_account", "consuming_account", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "P2PNetworkServiceConfigPartial": {"title": "PartialP2PNetworkServiceConfig", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "P2PNetworkServiceConfigRequest": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkServiceConfigRequestPartial"}, {"title": "P2PNetworkServiceConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "billing_account", "role_assignments", "connection", "vlan_config", "type"]}]}, "P2PNetworkServiceConfigRequestPartial": {"title": "PartialP2PNetworkServiceConfigRequest", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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": ["type"]}, "P2PNetworkServiceConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkServiceConfigUpdatePartial"}, {"title": "P2PNetworkServiceConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "vlan_config", "billing_account", "role_assignments", "connection", "type"]}]}, "P2PNetworkServiceConfigUpdatePartial": {"title": "PartialP2PNetworkServiceConfigUpdate", "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.", "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", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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"]}, "Port": {"allOf": [{"$ref": "#/components/schemas/PortPartial"}, {"title": "Port", "type": "object", "required": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "id", "media_type", "device", "pop"]}]}, "PortPartial": {"title": "PartialPort", "type": "object", "description": "Port", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled"]}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "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}, "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"}}}, "PortRequest": {"allOf": [{"$ref": "#/components/schemas/PortRequestPartial"}, {"title": "PortRequest", "type": "object", "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "pop", "media_type"]}]}, "PortRequestPartial": {"title": "PartialPortRequest", "type": "object", "description": "Port 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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "example": ["c-impl:123", "c-noc:331"]}, "connection": {"type": "string", "nullable": true}, "speed": {"type": "integer", "readOnly": true, "nullable": true, "minimum": 0}, "pop": {"type": "string", "description": "Same as the `pop` of the `device`.\n", "example": "pop:2913"}, "media_type": {"type": "string", "description": "The media type of the interface.\nSee the device's capabilities to see what types\nare available.\n", "example": "10GBASE-LR", "maxLength": 20}}}, "PortUpdate": {"allOf": [{"$ref": "#/components/schemas/PortUpdatePartial"}, {"title": "PortUpdate", "type": "object", "required": ["managing_account", "consuming_account", "billing_account", "role_assignments"]}]}, "PortUpdatePartial": {"title": "PartialPortUpdate", "type": "object", "description": "Port 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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "example": ["c-impl:123", "c-noc:331"]}, "connection": {"type": "string", "nullable": true}, "speed": {"type": "integer", "readOnly": true, "nullable": true, "minimum": 0}}}, "RateLimitedNetworkServiceConfig": {"allOf": [{"$ref": "#/components/schemas/RateLimitedNetworkServiceConfigPartial"}, {"title": "RateLimitedNetworkServiceConfig", "type": "object"}]}, "RateLimitedNetworkServiceConfigPartial": {"title": "PartialRateLimitedNetworkServiceConfig", "type": "object", "description": "Rate limited network services include a capacity\nproperty.", "properties": {"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}}}, "RouteServerNetworkFeatureConfig": {"allOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigPartial"}, {"title": "RouteServerNetworkFeatureConfig", "type": "object", "required": ["state", "managing_account", "consuming_account", "billing_account", "role_assignments", "network_feature", "network_service_config", "asn", "session_mode", "bgp_session_type", "ip", "id", "type"]}]}, "RouteServerNetworkFeatureConfigPartial": {"title": "PartialRouteServerNetworkFeatureConfig", "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"]}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "example": ["c-impl:123", "c-noc:331"]}, "network_feature": {"type": "string"}, "network_service_config": {"type": "string"}, "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.\nOnly IPs assigned to the corresponding network service\nconfig can be used."}, "id": {"type": "string", "maxLength": 80}}, "required": ["type"]}, "RouteServerNetworkFeatureConfigRequest": {"allOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial"}, {"title": "RouteServerNetworkFeatureConfigRequest", "type": "object", "required": ["managing_account", "consuming_account", "billing_account", "role_assignments", "network_feature", "network_service_config", "asn", "session_mode", "bgp_session_type", "ip", "type"]}]}, "RouteServerNetworkFeatureConfigRequestPartial": {"title": "PartialRouteServerNetworkFeatureConfigRequest", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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", "example": ["c-impl:123", "c-noc:331"]}, "network_feature": {"type": "string"}, "network_service_config": {"type": "string"}, "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.\nOnly IPs assigned to the corresponding network service\nconfig can be used."}}, "required": ["type"]}, "RouteServerNetworkFeatureConfigUpdate": {"allOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial"}, {"title": "RouteServerNetworkFeatureConfigUpdate", "type": "object", "required": ["managing_account", "consuming_account", "asn", "session_mode", "bgp_session_type", "ip", "type"]}]}, "RouteServerNetworkFeatureConfigUpdatePartial": {"title": "PartialRouteServerNetworkFeatureConfigUpdate", "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.", "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.\nOnly IPs assigned to the corresponding network service\nconfig can be used."}}, "required": ["type"]}, "VLanConfigDot1Q": {"allOf": [{"$ref": "#/components/schemas/VLanConfigDot1QPartial"}, {"title": "VLanConfigDot1Q", "type": "object", "required": ["vlan", "vlan_type"]}]}, "VLanConfigDot1QPartial": {"title": "PartialVLanConfigDot1Q", "type": "object", "description": "A Dot1Q vlan configuration", "properties": {"vlan_type": {"type": "string", "example": "dot1q"}, "vlan": {"type": "integer", "format": "int32", "description": "A VLAN tag\n", "example": 23, "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"]}, "VLanConfigPort": {"allOf": [{"$ref": "#/components/schemas/VLanConfigPortPartial"}, {"title": "VLanConfigPort", "type": "object", "required": ["vlan_type"]}]}, "VLanConfigPortPartial": {"title": "PartialVLanConfigPort", "type": "object", "description": "A Port vlan configuration", "properties": {"vlan_type": {"type": "string", "example": "port"}}, "required": ["vlan_type"]}, "VLanConfigQinQ": {"allOf": [{"$ref": "#/components/schemas/VLanConfigQinQPartial"}, {"title": "VLanConfigQinQ", "type": "object", "required": ["outer_vlan", "inner_vlan", "vlan_type"]}]}, "VLanConfigQinQPartial": {"title": "PartialVLanConfigQinQ", "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.\n", "example": 200, "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": ["vlan_type"]}, "VlanConfig": {"title": "VlanConfig", "description": "The vlan configuration defines how the service\nis made available on the connection.", "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"}}}, "VlanConfigPartial": {"title": "VlanConfig (partial)", "description": "The vlan configuration defines how the service\nis made available on the connection.", "oneOf": [{"$ref": "#/components/schemas/VLanConfigDot1QPartial"}, {"$ref": "#/components/schemas/VLanConfigQinQPartial"}, {"$ref": "#/components/schemas/VLanConfigPortPartial"}], "discriminator": {"propertyName": "vlan_type", "mapping": {"dot1q": "#/components/schemas/VLanConfigDot1QPartial", "qinq": "#/components/schemas/VLanConfigQinQPartial", "port": "#/components/schemas/VLanConfigPortPartial"}}}, "Account": {"allOf": [{"$ref": "#/components/schemas/AccountPartial"}, {"title": "Account", "type": "object", "required": ["state", "name", "metro_area_network_presence", "id"]}]}, "AccountPartial": {"title": "PartialAccount", "type": "object", "description": "Account", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled"]}, "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.\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", "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.", "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"}}}, "AccountRequest": {"allOf": [{"$ref": "#/components/schemas/AccountRequestPartial"}, {"title": "AccountRequest", "type": "object", "required": ["name", "address"]}]}, "AccountRequestPartial": {"title": "PartialAccountRequest", "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.\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", "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.", "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"}}}, "AccountUpdate": {"allOf": [{"$ref": "#/components/schemas/AccountUpdatePartial"}, {"title": "AccountUpdate", "type": "object", "required": ["name", "metro_area_network_presence", "address"]}]}, "AccountUpdatePartial": {"title": "PartialAccountUpdate", "type": "object", "description": "Account Update Request", "properties": {"managing_account": {"type": "string", "description": "The `id` of a managing account. Can be used for creating\na customer hierachy.\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", "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.", "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"}}}, "Address": {"allOf": [{"$ref": "#/components/schemas/AddressPartial"}, {"title": "Address", "type": "object", "required": ["country", "locality", "postal_code", "street_address"]}]}, "AddressPartial": {"title": "PartialAddress", "type": "object", "description": "", "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}}}, "BillingInformation": {"allOf": [{"$ref": "#/components/schemas/BillingInformationPartial"}, {"title": "BillingInformation", "type": "object", "required": ["name", "address"]}]}, "BillingInformationPartial": {"title": "PartialBillingInformation", "type": "object", "description": "Optional information required for issuing invoices.\nOnly accounts with `billing_information` present can be used\nas a `billing_account`.", "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}}}, "Consumable": {"allOf": [{"$ref": "#/components/schemas/ConsumablePartial"}, {"title": "Consumable", "type": "object", "required": ["consuming_account"]}]}, "ConsumablePartial": {"title": "PartialConsumable", "type": "object", "description": "Consumable", "properties": {"consuming_account": {"type": "string", "description": "The `id` of the account consuming a service.\n\nUsed to be `owning_customer`.\n", "example": "2381982"}}}, "Contact": {"allOf": [{"$ref": "#/components/schemas/ContactPartial"}, {"title": "Contact", "type": "object", "required": ["managing_account", "consuming_account", "id"]}]}, "ContactPartial": {"title": "PartialContact", "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.", "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"}}}, "ContactRequest": {"allOf": [{"$ref": "#/components/schemas/ContactRequestPartial"}, {"title": "ContactRequest", "type": "object", "required": ["managing_account", "consuming_account"]}]}, "ContactRequestPartial": {"title": "PartialContactRequest", "type": "object", "description": "A contact creation 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.", "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}}}, "ContactUpdate": {"allOf": [{"$ref": "#/components/schemas/ContactUpdatePartial"}, {"title": "ContactUpdate", "type": "object", "required": ["managing_account", "consuming_account"]}]}, "ContactUpdatePartial": {"title": "PartialContactUpdate", "type": "object", "description": "A 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.", "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}}}, "Contactable": {"allOf": [{"$ref": "#/components/schemas/ContactablePartial"}, {"title": "Contactable", "type": "object", "required": ["role_assignments"]}]}, "ContactablePartial": {"title": "PartialContactable", "type": "object", "description": "Contactable", "properties": {"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", "example": ["c-impl:123", "c-noc:331"]}}}, "ExternalReference": {"allOf": [{"$ref": "#/components/schemas/ExternalReferencePartial"}, {"title": "ExternalReference", "type": "object"}]}, "ExternalReferencePartial": {"title": "PartialExternalReference", "type": "object", "description": "External Reference", "properties": {"external_ref": {"type": "string", "description": "Reference field, free to use for the API user.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}}}, "Invoiceable": {"allOf": [{"$ref": "#/components/schemas/InvoiceablePartial"}, {"title": "Invoiceable", "type": "object", "required": ["billing_account"]}]}, "InvoiceablePartial": {"title": "PartialInvoiceable", "type": "object", "description": "Invoiceable", "properties": {"purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}}}, "Manageable": {"allOf": [{"$ref": "#/components/schemas/ManageablePartial"}, {"title": "Manageable", "type": "object", "required": ["managing_account"]}]}, "ManageablePartial": {"title": "PartialManageable", "type": "object", "description": "Managed", "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"}}}, "Ownable": {"allOf": [{"$ref": "#/components/schemas/OwnablePartial"}, {"title": "Ownable", "type": "object", "required": ["managing_account", "consuming_account"]}]}, "OwnablePartial": {"title": "PartialOwnable", "type": "object", "description": "Ownable", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}}}, "Role": {"allOf": [{"$ref": "#/components/schemas/RolePartial"}, {"title": "Role", "type": "object", "required": ["name", "required_fields", "id"]}]}, "RolePartial": {"title": "PartialRole", "type": "object", "description": "A 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"}}}, "RoleAssignment": {"allOf": [{"$ref": "#/components/schemas/RoleAssignmentPartial"}, {"title": "RoleAssignment", "type": "object", "required": ["role", "contact", "id"]}]}, "RoleAssignmentPartial": {"title": "PartialRoleAssignment", "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"}}}, "RoleAssignmentRequest": {"allOf": [{"$ref": "#/components/schemas/RoleAssignmentRequestPartial"}, {"title": "RoleAssignmentRequest", "type": "object", "required": ["role", "contact"]}]}, "RoleAssignmentRequestPartial": {"title": "PartialRoleAssignmentRequest", "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"}}}, "RoleAssignmentUpdate": {"allOf": [{"$ref": "#/components/schemas/RoleAssignmentUpdatePartial"}, {"title": "RoleAssignmentUpdate", "type": "object", "required": ["role", "contact"]}]}, "RoleAssignmentUpdatePartial": {"title": "PartialRoleAssignmentUpdate", "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"}}}, "RoleRequest": {"allOf": [{"$ref": "#/components/schemas/RoleRequestPartial"}, {"title": "RoleRequest", "type": "object", "required": ["name", "required_fields"]}]}, "RoleRequestPartial": {"title": "PartialRoleRequest", "type": "object", "description": "A new 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"]}}}, "RoleUpdate": {"allOf": [{"$ref": "#/components/schemas/RoleUpdatePartial"}, {"title": "RoleUpdate", "type": "object", "required": ["name", "required_fields"]}]}, "RoleUpdatePartial": {"title": "PartialRoleUpdate", "type": "object", "description": "A 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"]}}}, "Event": {"allOf": [{"$ref": "#/components/schemas/EventPartial"}, {"title": "Event", "type": "object", "required": ["serial", "type", "payload", "timestamp"]}]}, "EventPartial": {"title": "PartialEvent", "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"}}}, "Stateful": {"allOf": [{"$ref": "#/components/schemas/StatefulPartial"}, {"title": "Stateful", "type": "object", "required": ["state"]}]}, "StatefulPartial": {"title": "PartialStateful", "type": "object", "description": "A stateful object", "properties": {"state": {"type": "string", "enum": ["requested", "allocated", "testing", "production", "production_change_pending", "decommission_requested", "decommissioned", "archived", "error", "operator", "scheduled"]}, "status": {"type": "array", "items": {"$ref": "#/components/schemas/Status"}}}}, "Status": {"allOf": [{"$ref": "#/components/schemas/StatusPartial"}, {"title": "Status", "type": "object", "required": ["severity", "tag", "message", "attrs", "timestamp"]}]}, "StatusPartial": {"title": "PartialStatus", "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"}, "message": {"type": "string"}, "attrs": {"type": "object"}, "timestamp": {"type": "string", "format": "date-time"}}}, "HealthResponse": {"allOf": [{"$ref": "#/components/schemas/HealthResponsePartial"}, {"title": "HealthResponse", "type": "object", "required": ["status"]}]}, "HealthResponsePartial": {"title": "PartialHealthResponse", "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."}}}, "ImplementationResponse": {"allOf": [{"$ref": "#/components/schemas/ImplementationResponsePartial"}, {"title": "ImplementationResponse", "type": "object", "required": ["schema_version", "supported_network_service_types", "supported_network_service_config_types", "supported_network_feature_types", "supported_network_feature_config_types", "supported_operations"]}]}, "ImplementationResponsePartial": {"title": "PartialImplementationResponse", "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"]}}}, "IpAddress": {"allOf": [{"$ref": "#/components/schemas/IpAddressPartial"}, {"title": "IpAddress", "type": "object", "required": ["managing_account", "consuming_account", "version", "address", "prefix_length", "id"]}]}, "IpAddressPartial": {"title": "PartialIpAddress", "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.", "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}}}, "IpAddressRequest": {"allOf": [{"$ref": "#/components/schemas/IpAddressRequestPartial"}, {"title": "IpAddressRequest", "type": "object", "required": ["managing_account", "consuming_account", "version", "address", "prefix_length"]}]}, "IpAddressRequestPartial": {"title": "PartialIpAddressRequest", "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.", "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}}}, "IpAddressUpdate": {"allOf": [{"$ref": "#/components/schemas/IpAddressUpdatePartial"}, {"title": "IpAddressUpdate", "type": "object", "required": ["managing_account", "consuming_account", "version", "address", "prefix_length"]}]}, "IpAddressUpdatePartial": {"title": "PartialIpAddressUpdate", "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.", "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}}}, "MacAddress": {"allOf": [{"$ref": "#/components/schemas/MacAddressPartial"}, {"title": "MacAddress", "type": "object", "required": ["managing_account", "consuming_account", "address", "id"]}]}, "MacAddressPartial": {"title": "PartialMacAddress", "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.", "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}}}, "MacAddressRequest": {"allOf": [{"$ref": "#/components/schemas/MacAddressRequestPartial"}, {"title": "MacAddressRequest", "type": "object", "required": ["managing_account", "consuming_account", "address"]}]}, "MacAddressRequestPartial": {"title": "PartialMacAddressRequest", "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.", "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}}}, "ProblemResponse": {"allOf": [{"$ref": "#/components/schemas/ProblemResponsePartial"}, {"title": "ProblemResponse", "type": "object", "required": ["type"]}]}, "ProblemResponsePartial": {"title": "PartialProblemResponse", "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."}}}, "AllowMemberJoiningRule": {"allOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRulePartial"}, {"title": "AllowMemberJoiningRule", "type": "object", "required": ["managing_account", "consuming_account", "id", "network_service", "type"]}]}, "AllowMemberJoiningRulePartial": {"title": "PartialAllowMemberJoiningRule", "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.", "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": ["type"]}, "AllowMemberJoiningRuleRequest": {"allOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleRequestPartial"}, {"title": "AllowMemberJoiningRuleRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "type"]}]}, "AllowMemberJoiningRuleRequestPartial": {"title": "PartialAllowMemberJoiningRuleRequest", "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.", "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": ["type"]}, "AllowMemberJoiningRuleUpdate": {"allOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleUpdatePartial"}, {"title": "AllowMemberJoiningRuleUpdate", "type": "object", "required": ["managing_account", "consuming_account", "type"]}]}, "AllowMemberJoiningRuleUpdatePartial": {"title": "PartialAllowMemberJoiningRuleUpdate", "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.", "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"]}, "CloudNetworkService": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkServicePartial"}, {"title": "CloudNetworkService", "type": "object", "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "cloud_key", "diversity", "provider_ref", "type"]}]}, "CloudNetworkServicePartial": {"title": "PartialCloudNetworkService", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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": ["type"]}, "CloudNetworkServiceRequest": {"allOf": [{"$ref": "#/components/schemas/CloudNetworkServiceRequestPartial"}, {"title": "CloudNetworkServiceRequest", "type": "object", "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "cloud_key", "type"]}]}, "CloudNetworkServiceRequestPartial": {"title": "PartialCloudNetworkServiceRequest", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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"]}, "DenyMemberJoiningRule": {"allOf": [{"$ref": "#/components/schemas/DenyMemberJoiningRulePartial"}, {"title": "DenyMemberJoiningRule", "type": "object", "required": ["managing_account", "consuming_account", "id", "network_service", "type"]}]}, "DenyMemberJoiningRulePartial": {"title": "PartialDenyMemberJoiningRule", "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.", "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": ["type"]}, "DenyMemberJoiningRuleRequest": {"allOf": [{"$ref": "#/components/schemas/DenyMemberJoiningRuleRequestPartial"}, {"title": "DenyMemberJoiningRuleRequest", "type": "object", "required": ["managing_account", "consuming_account", "network_service", "type"]}]}, "DenyMemberJoiningRuleRequestPartial": {"title": "PartialDenyMemberJoiningRuleRequest", "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.", "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": ["type"]}, "DenyMemberJoiningRuleUpdate": {"allOf": [{"$ref": "#/components/schemas/DenyMemberJoiningRuleUpdatePartial"}, {"title": "DenyMemberJoiningRuleUpdate", "type": "object", "required": ["managing_account", "consuming_account", "type"]}]}, "DenyMemberJoiningRuleUpdatePartial": {"title": "PartialDenyMemberJoiningRuleUpdate", "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.", "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"]}, "EVPNetworkService": {"allOf": [{"$ref": "#/components/schemas/EVPNetworkServicePartial"}, {"title": "EVPNetworkService", "type": "object"}]}, "EVPNetworkServicePartial": {"title": "PartialEVPNetworkService", "type": "object", "description": "Ethernet Virtual Private Network Services", "properties": {"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."}}}, "ExchangeLanNetworkService": {"allOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServicePartial"}, {"title": "ExchangeLanNetworkService", "type": "object", "required": ["state", "id", "managing_account", "consuming_account", "name", "metro_area_network", "network_features", "subnet_v4", "subnet_v6", "type"]}]}, "ExchangeLanNetworkServicePartial": {"title": "PartialExchangeLanNetworkService", "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"]}, "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.", "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": ["type"]}, "IXPSpecificFeatureFlag": {"allOf": [{"$ref": "#/components/schemas/IXPSpecificFeatureFlagPartial"}, {"title": "IXPSpecificFeatureFlag", "type": "object", "required": ["name", "description"]}]}, "IXPSpecificFeatureFlagPartial": {"title": "PartialIXPSpecificFeatureFlag", "type": "object", "description": "IXP-Specific Feature Flag", "properties": {"name": {"type": "string", "description": "The name of the feature flag.\n", "example": "RPKI", "maxLength": 20}, "description": {"type": "string", "description": "The description of the feature flag.\n", "example": "RPKI reject invalid filtering is available", "maxLength": 80}}}, "MP2MPNetworkService": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkServicePartial"}, {"title": "MP2MPNetworkService", "type": "object", "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "name", "member_joining_rules", "network_features", "type"]}]}, "MP2MPNetworkServicePartial": {"title": "PartialMP2MPNetworkService", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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 `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "name": {"type": "string", "description": "Name of the multi-point to multi-point\nvirtual circuit.", "maxLength": 40}, "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": ["type"]}, "MP2MPNetworkServiceRequest": {"allOf": [{"$ref": "#/components/schemas/MP2MPNetworkServiceRequestPartial"}, {"title": "MP2MPNetworkServiceRequest", "type": "object", "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "name", "type"]}]}, "MP2MPNetworkServiceRequestPartial": {"title": "PartialMP2MPNetworkServiceRequest", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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 `name`, `type`,\n`product_offering`, `consuming_account` and\n`managing_account` are made available.\n\nOther required fields are redacted.", "default": false}, "name": {"type": "string", "description": "Name of the multi-point to multi-point\nvirtual circuit.", "maxLength": 40}, "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"]}, "MemberJoiningRule": {"title": "MemberJoiningRule", "description": "Polymorphic Member Joining Rule", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRule"}, {"$ref": "#/components/schemas/DenyMemberJoiningRule"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRule", "deny": "#/components/schemas/DenyMemberJoiningRule"}}}, "MemberJoiningRulePartial": {"title": "MemberJoiningRule (partial)", "description": "Polymorphic Member Joining Rule", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRulePartial"}, {"$ref": "#/components/schemas/DenyMemberJoiningRulePartial"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRulePartial", "deny": "#/components/schemas/DenyMemberJoiningRulePartial"}}}, "MemberJoiningRuleRequest": {"title": "MemberJoiningRuleRequest", "description": "Polymorphic Member Joining Rule Request", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleRequest"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleRequest"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleRequest", "deny": "#/components/schemas/DenyMemberJoiningRuleRequest"}}}, "MemberJoiningRuleRequestPartial": {"title": "MemberJoiningRuleRequest (partial)", "description": "Polymorphic Member Joining Rule Request", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleRequestPartial"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleRequestPartial"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleRequestPartial", "deny": "#/components/schemas/DenyMemberJoiningRuleRequestPartial"}}}, "MemberJoiningRuleUpdate": {"title": "MemberJoiningRuleUpdate", "description": "Polymorphic Member Joining Rule Update", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleUpdate"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleUpdate"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleUpdate", "deny": "#/components/schemas/DenyMemberJoiningRuleUpdate"}}}, "MemberJoiningRuleUpdatePartial": {"title": "MemberJoiningRuleUpdate (partial)", "description": "Polymorphic Member Joining Rule Update", "oneOf": [{"$ref": "#/components/schemas/AllowMemberJoiningRuleUpdatePartial"}, {"$ref": "#/components/schemas/DenyMemberJoiningRuleUpdatePartial"}], "discriminator": {"propertyName": "type", "mapping": {"allow": "#/components/schemas/AllowMemberJoiningRuleUpdatePartial", "deny": "#/components/schemas/DenyMemberJoiningRuleUpdatePartial"}}}, "NetworkFeature": {"title": "NetworkFeature", "description": "Polymorphic Network Feature", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeature"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeature"}}}, "NetworkFeaturePartial": {"title": "NetworkFeature (partial)", "description": "Polymorphic Network Feature", "oneOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeaturePartial"}], "discriminator": {"propertyName": "type", "mapping": {"route_server": "#/components/schemas/RouteServerNetworkFeaturePartial"}}}, "NetworkService": {"title": "NetworkService", "description": "Polymorphic Network Services", "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"}}}, "NetworkServicePartial": {"title": "NetworkService (partial)", "description": "Polymorphic Network Services", "oneOf": [{"$ref": "#/components/schemas/ExchangeLanNetworkServicePartial"}, {"$ref": "#/components/schemas/P2PNetworkServicePartial"}, {"$ref": "#/components/schemas/P2MPNetworkServicePartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServicePartial"}, {"$ref": "#/components/schemas/CloudNetworkServicePartial"}], "discriminator": {"propertyName": "type", "mapping": {"exchange_lan": "#/components/schemas/ExchangeLanNetworkServicePartial", "p2p_vc": "#/components/schemas/P2PNetworkServicePartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServicePartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServicePartial", "cloud_vc": "#/components/schemas/CloudNetworkServicePartial"}}}, "NetworkServiceChangeRequest": {"allOf": [{"$ref": "#/components/schemas/NetworkServiceChangeRequestPartial"}, {"title": "NetworkServiceChangeRequest", "type": "object", "required": ["product_offering"]}]}, "NetworkServiceChangeRequestPartial": {"title": "PartialNetworkServiceChangeRequest", "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}}}, "NetworkServiceDeleteResponse": {"title": "NetworkServiceDeleteResponse", "description": "Polymorphic Network Service Request", "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"}}}, "NetworkServiceDeleteResponsePartial": {"title": "NetworkServiceDeleteResponse (partial)", "description": "Polymorphic Network Service Request", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkServicePartial"}, {"$ref": "#/components/schemas/P2MPNetworkServicePartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServicePartial"}, {"$ref": "#/components/schemas/CloudNetworkServicePartial"}], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkServicePartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServicePartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServicePartial", "cloud_vc": "#/components/schemas/CloudNetworkServicePartial"}}}, "NetworkServiceRequest": {"title": "NetworkServiceRequest", "description": "Polymorphic Network Service Request", "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"}}}, "NetworkServiceRequestPartial": {"title": "NetworkServiceRequest (partial)", "description": "Polymorphic Network Service Request", "oneOf": [{"$ref": "#/components/schemas/P2PNetworkServiceRequestPartial"}, {"$ref": "#/components/schemas/P2MPNetworkServiceRequestPartial"}, {"$ref": "#/components/schemas/MP2MPNetworkServiceRequestPartial"}, {"$ref": "#/components/schemas/CloudNetworkServiceRequestPartial"}], "discriminator": {"propertyName": "type", "mapping": {"p2p_vc": "#/components/schemas/P2PNetworkServiceRequestPartial", "p2mp_vc": "#/components/schemas/P2MPNetworkServiceRequestPartial", "mp2mp_vc": "#/components/schemas/MP2MPNetworkServiceRequestPartial", "cloud_vc": "#/components/schemas/CloudNetworkServiceRequestPartial"}}}, "P2MPNetworkService": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkServicePartial"}, {"title": "P2MPNetworkService", "type": "object", "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "name", "network_features", "member_joining_rules", "type"]}]}, "P2MPNetworkServicePartial": {"title": "PartialP2MPNetworkService", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.", "maxLength": 40}, "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": ["type"]}, "P2MPNetworkServiceRequest": {"allOf": [{"$ref": "#/components/schemas/P2MPNetworkServiceRequestPartial"}, {"title": "P2MPNetworkServiceRequest", "type": "object", "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "name", "type"]}]}, "P2MPNetworkServiceRequestPartial": {"title": "PartialP2MPNetworkServiceRequest", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "name": {"type": "string", "description": "Name of the point to multi-point virtual circuit.", "maxLength": 40}, "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"]}, "P2PNetworkService": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkServicePartial"}, {"title": "P2PNetworkService", "type": "object", "required": ["state", "id", "product_offering", "managing_account", "consuming_account", "billing_account", "joining_member_account", "type"]}]}, "P2PNetworkServicePartial": {"title": "PartialP2PNetworkService", "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"]}, "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": "Your obligation to pay for the service will end on this date.\nTypically `\u2265 decommission_at`.\n\nThis field is only used when\nthe state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`."}, "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "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": ["type"]}, "P2PNetworkServiceRequest": {"allOf": [{"$ref": "#/components/schemas/P2PNetworkServiceRequestPartial"}, {"title": "P2PNetworkServiceRequest", "type": "object", "required": ["product_offering", "managing_account", "consuming_account", "billing_account", "joining_member_account", "type"]}]}, "P2PNetworkServiceRequestPartial": {"title": "PartialP2PNetworkServiceRequest", "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.", "example": "IX:Service:23042", "nullable": true, "maxLength": 128}, "purchase_order": {"type": "string", "description": "Purchase Order ID which will be displayed on the invoice.\n", "default": "", "example": "Project: DC Moon", "maxLength": 80}, "contract_ref": {"type": "string", "description": "A reference to a contract. If no specific contract is used, a default\nMAY be chosen by the implementer.\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`."}, "joining_member_account": {"type": "string", "description": "The account of the B-side member joining the virtual circuit.\n", "example": "231829"}}, "required": ["type"]}, "RouteServerNetworkFeature": {"allOf": [{"$ref": "#/components/schemas/RouteServerNetworkFeaturePartial"}, {"title": "RouteServerNetworkFeature", "type": "object", "required": ["id", "name", "required", "flags", "network_service", "asn", "fqdn", "address_families", "session_mode", "available_bgp_session_types", "ip_v4", "ip_v6", "type"]}]}, "RouteServerNetworkFeaturePartial": {"title": "PartialRouteServerNetworkFeature", "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", "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", "example": "23.42.0.1"}, "ip_v6": {"type": "string", "description": "IPv6 address in hexadecimal colon separated notation.\n", "example": "2001:23:42::1"}}, "required": ["type"]}}, "securitySchemes": {"Bearer": {"type": "http", "scheme": "bearer", "bearerFormat": "JWT"}}}, "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_state_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`."}, {"name": "auth", "description": "Open 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 connections\ncollected together into a LAG (aka trunk).\n\nA `connection` with only one `port` can be also configured as\nstandalone which means no LAG configuration on the switch."}, {"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": "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`."}, {"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": "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\nWell-defined roles are: `implementation`, `noc` and `peering`.\nAn implementer may choose to support them or not or may add\nadditional ones."}], "servers": [{"url": "/api/v2"}], "security": [{"Bearer": []}]}