Система управления тарифами клиента

OpenAPI 1.0.0

Платформа для хранения и управления продуктовыми комиссиями и тарифами клиентов ЮЛ

Скачать исходную спецификацию

Варианты

  • Паблик

Операции API

GET /v1/tariff-plans/public/available/client/{cnum}/list — getClientAvailableTariffPlans

Возвращает доступные тарифные планы для клиента

{
  "tags": [
    "tariff-plan-controller"
  ],
  "summary": "getClientAvailableTariffPlans",
  "description": "Возвращает доступные тарифные планы для клиента",
  "operationId": "getClientAvailableTariffPlans",
  "parameters": [
    {
      "name": "cnum",
      "in": "path",
      "description": "Идентификатор клиента",
      "required": true,
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "page",
      "in": "query",
      "description": "Номер страницы",
      "required": false,
      "schema": {
        "minimum": 0,
        "type": "integer",
        "format": "int32",
        "default": 0
      }
    },
    {
      "name": "size",
      "in": "query",
      "description": "Размер страницы",
      "required": false,
      "schema": {
        "minimum": 1,
        "type": "integer",
        "format": "int32",
        "default": 10
      }
    },
    {
      "$ref": "#/components/parameters/IdTokenHeader"
    },
    {
      "$ref": "#/components/parameters/AuthorizationHeader"
    }
  ],
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "*/*": {
          "schema": {
            "$ref": "#/components/schemas/AvailableTariffPlansView"
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ApiError4xx"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  }
}

GET /v1/tariff-plan/documents/download/record/{id} — downloadTariffPlanDocumentContent

Скачивание документа тарифного плана по его идентификатору. Возвращает файл (например, PDF) потоком с указанием MIME-типа, размера и названия файла в заголовках

{
  "tags": [
    "Tariff plan documents"
  ],
  "summary": "downloadTariffPlanDocumentContent",
  "description": "Скачивание документа тарифного плана по его идентификатору. Возвращает файл (например, PDF) потоком с указанием MIME-типа, размера и названия файла в заголовках",
  "operationId": "downloadTariffPlanDocumentContent",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "Уникальный идентификатор документа с тарифным планом",
      "required": true,
      "schema": {
        "type": "integer",
        "format": "int64",
        "example": 1
      }
    },
    {
      "$ref": "#/components/parameters/IdTokenHeader"
    },
    {
      "$ref": "#/components/parameters/AuthorizationHeader"
    }
  ],
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "*/*": {
          "schema": {
            "$ref": "#/components/schemas/StreamingResponseBody"
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ApiError4xx"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  }
}

GET /v1/tariff-plan/client/{cnum}/documents/record — getTariffPlanDocumentByClient

Возвращает информацию о документе тарифного плана по коду клиента cnum

{
  "tags": [
    "Tariff plan documents"
  ],
  "summary": "getTariffPlanDocumentByClient",
  "description": "Возвращает информацию о документе тарифного плана по коду клиента cnum",
  "operationId": "getTariffPlanDocumentByClient",
  "parameters": [
    {
      "name": "cnum",
      "in": "path",
      "description": "Код клиента cnum",
      "required": true,
      "schema": {
        "type": "string",
        "example": "Z53819"
      }
    },
    {
      "$ref": "#/components/parameters/IdTokenHeader"
    },
    {
      "$ref": "#/components/parameters/AuthorizationHeader"
    }
  ],
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "*/*": {
          "schema": {
            "$ref": "#/components/schemas/TariffPlanDocumentPublicView"
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ApiError4xx"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  }
}

GET /v1/client/{cnum}/tariff-plan/public/future — getFutureClientTariffPlanPublicProjectionsByCnum

Возвращает публичные проекции будущих тарифных планов клиента

{
  "tags": [
    "future-client-tariff-plan-controller"
  ],
  "summary": "getFutureClientTariffPlanPublicProjectionsByCnum",
  "description": "Возвращает публичные проекции будущих тарифных планов клиента",
  "operationId": "getFutureClientTariffPlanPublicProjectionsByCnum",
  "parameters": [
    {
      "name": "cnum",
      "in": "path",
      "description": "Идентификатор клиента",
      "required": true,
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "page",
      "in": "query",
      "description": "Номер страницы",
      "required": false,
      "schema": {
        "minimum": 0,
        "type": "integer",
        "format": "int32",
        "default": 0
      }
    },
    {
      "name": "size",
      "in": "query",
      "description": "Размер страницы",
      "required": false,
      "schema": {
        "minimum": 1,
        "type": "integer",
        "format": "int32",
        "default": 10
      }
    },
    {
      "$ref": "#/components/parameters/IdTokenHeader"
    },
    {
      "$ref": "#/components/parameters/AuthorizationHeader"
    }
  ],
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "*/*": {
          "schema": {
            "$ref": "#/components/schemas/PageResponseFutureClientTariffPlanPublicView"
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ApiError4xx"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  }
}

Схемы и примеры

{
  "schemas": {
    "AvailableTariffPlansView": {
      "required": [
        "availableSince",
        "tariffPlans"
      ],
      "type": "object",
      "properties": {
        "availableSince": {
          "type": "string",
          "description": "Дата доступности",
          "format": "date"
        },
        "tariffPlans": {
          "$ref": "#/components/schemas/PageResponseTariffPlanPublicDataView"
        }
      },
      "description": "Публичное представление тарифного плана"
    },
    "PageResponseTariffPlanPublicDataView": {
      "required": [
        "content",
        "hasNext",
        "hasPrevious",
        "number",
        "size"
      ],
      "type": "object",
      "properties": {
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TariffPlanPublicDataView"
          }
        },
        "size": {
          "type": "integer",
          "format": "int32"
        },
        "number": {
          "type": "integer",
          "format": "int32"
        },
        "hasNext": {
          "type": "boolean"
        },
        "hasPrevious": {
          "type": "boolean"
        }
      },
      "description": "Список тарифных планов"
    },
    "TariffPlanPublicDataView": {
      "required": [
        "code",
        "documentId",
        "publicName"
      ],
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "Код тарифного плана"
        },
        "publicName": {
          "type": "string",
          "description": "Публичное наименование"
        },
        "documentId": {
          "type": "integer",
          "description": "Идентификатор документа",
          "format": "int64"
        }
      },
      "description": "Представление публичных данных тарифного плана"
    },
    "StreamingResponseBody": {
      "type": "object"
    },
    "TariffPlanDocumentAttachmentPublicView": {
      "required": [
        "name",
        "size",
        "type"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Имя файла",
          "example": "SPKG_tariff_plan.pdf"
        },
        "size": {
          "type": "integer",
          "description": "Размер файла в байтах",
          "format": "int64",
          "example": 245761
        },
        "type": {
          "type": "string",
          "description": "Тип содержимого файла",
          "example": "PDF",
          "enum": [
            "PDF"
          ]
        }
      },
      "description": "Метаданные файла с тарифным планом"
    },
    "TariffPlanDocumentPublicView": {
      "required": [
        "attachment",
        "id",
        "name",
        "tariffPlan"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "Уникальный идентификатор документа",
          "format": "int64",
          "example": 1
        },
        "tariffPlan": {
          "type": "string",
          "description": "Код тарифного плана",
          "example": "SPKG"
        },
        "name": {
          "type": "string",
          "description": "Отображаемое название документа",
          "example": "Тарифный план SPKG"
        },
        "attachment": {
          "$ref": "#/components/schemas/TariffPlanDocumentAttachmentPublicView"
        }
      },
      "description": "Информация о документе тарифного плана"
    },
    "FutureClientTariffPlanPublicView": {
      "required": [
        "activateAt",
        "client",
        "clientTariffPlanVersion",
        "id",
        "servicePackage",
        "servicePackageName",
        "tariffPlan",
        "tariffPlanDocumentId",
        "tariffPlanName",
        "tariffPlanPublicName"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "Уникальный идентификатор",
          "format": "int64"
        },
        "client": {
          "type": "string",
          "description": "Cnum клиента"
        },
        "tariffPlan": {
          "type": "string",
          "description": "Код тарифного плана"
        },
        "tariffPlanName": {
          "type": "string",
          "description": "Наименование тарифного плана"
        },
        "tariffPlanPublicName": {
          "type": "string",
          "description": "Публичное наименование тарифного плана"
        },
        "servicePackage": {
          "type": "string",
          "description": "Код сервисного пакета"
        },
        "servicePackageName": {
          "type": "string",
          "description": "Наименование сервисного пакета"
        },
        "activateAt": {
          "type": "string",
          "description": "Дата активации",
          "format": "date-time"
        },
        "clientTariffPlanVersion": {
          "type": "string",
          "description": "Версия тарифного плана клиента"
        },
        "tariffPlanDocumentId": {
          "type": "integer",
          "description": "Идентификатор документа тарифного плана",
          "format": "int64"
        }
      },
      "description": "Публичное представление будущего тарифного плана клиента"
    },
    "PageResponseFutureClientTariffPlanPublicView": {
      "required": [
        "content",
        "hasNext",
        "hasPrevious",
        "number",
        "size"
      ],
      "type": "object",
      "properties": {
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/FutureClientTariffPlanPublicView"
          }
        },
        "size": {
          "type": "integer",
          "format": "int32"
        },
        "number": {
          "type": "integer",
          "format": "int32"
        },
        "hasNext": {
          "type": "boolean"
        },
        "hasPrevious": {
          "type": "boolean"
        }
      }
    },
    "ApiError4xx": {
      "required": [
        "code",
        "data",
        "message",
        "status",
        "traceId"
      ],
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "Код ошибки для обработки на клиенте",
          "example": "oct.not-found"
        },
        "traceId": {
          "type": "string",
          "description": "Идентификатор трассировки в распределенной системе",
          "example": "cf9924bed9c41f689f97728a50dbc035"
        },
        "message": {
          "type": "string",
          "description": "Сообщение об ошибке",
          "example": "Record not found"
        },
        "data": {
          "type": "object",
          "description": "Дополнительные данные об ошибке (например, список нарушенных полей валидации)",
          "example": {
            "key": "value"
          }
        },
        "status": {
          "type": "string",
          "description": "HTTP-статус, соответствующий ошибке",
          "example": "400 BAD_REQUEST",
          "enum": [
            "400 BAD_REQUEST",
            "401 UNAUTHORIZED",
            "402 PAYMENT_REQUIRED",
            "403 FORBIDDEN",
            "404 NOT_FOUND",
            "405 METHOD_NOT_ALLOWED",
            "406 NOT_ACCEPTABLE",
            "407 PROXY_AUTHENTICATION_REQUIRED",
            "408 REQUEST_TIMEOUT",
            "409 CONFLICT",
            "410 GONE",
            "411 LENGTH_REQUIRED",
            "412 PRECONDITION_FAILED",
            "413 CONTENT_TOO_LARGE",
            "413 PAYLOAD_TOO_LARGE",
            "414 URI_TOO_LONG",
            "415 UNSUPPORTED_MEDIA_TYPE",
            "416 REQUESTED_RANGE_NOT_SATISFIABLE",
            "417 EXPECTATION_FAILED",
            "418 I_AM_A_TEAPOT",
            "421 MISDIRECTED_REQUEST",
            "422 UNPROCESSABLE_CONTENT",
            "422 UNPROCESSABLE_ENTITY",
            "423 LOCKED",
            "424 FAILED_DEPENDENCY",
            "425 TOO_EARLY",
            "426 UPGRADE_REQUIRED",
            "428 PRECONDITION_REQUIRED",
            "429 TOO_MANY_REQUESTS",
            "431 REQUEST_HEADER_FIELDS_TOO_LARGE",
            "451 UNAVAILABLE_FOR_LEGAL_REASONS"
          ]
        }
      },
      "description": "Модель ошибки API"
    },
    "ApiError5xx": {
      "required": [
        "code",
        "data",
        "message",
        "status",
        "traceId"
      ],
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "Код ошибки для обработки на клиенте",
          "example": "oct.not-found"
        },
        "traceId": {
          "type": "string",
          "description": "Идентификатор трассировки в распределенной системе",
          "example": "cf9924bed9c41f689f97728a50dbc035"
        },
        "message": {
          "type": "string",
          "description": "Сообщение об ошибке",
          "example": "Record not found"
        },
        "data": {
          "type": "object",
          "description": "Дополнительные данные об ошибке (например, список нарушенных полей валидации)",
          "example": {
            "key": "value"
          }
        },
        "status": {
          "type": "string",
          "description": "HTTP-статус, соответствующий ошибке",
          "example": "400 BAD_REQUEST",
          "enum": [
            "500 INTERNAL_SERVER_ERROR",
            "501 NOT_IMPLEMENTED",
            "502 BAD_GATEWAY",
            "503 SERVICE_UNAVAILABLE",
            "504 GATEWAY_TIMEOUT",
            "505 HTTP_VERSION_NOT_SUPPORTED",
            "506 VARIANT_ALSO_NEGOTIATES",
            "507 INSUFFICIENT_STORAGE",
            "508 LOOP_DETECTED",
            "509 BANDWIDTH_LIMIT_EXCEEDED",
            "510 NOT_EXTENDED",
            "511 NETWORK_AUTHENTICATION_REQUIRED"
          ]
        }
      },
      "description": "Модель ошибки API"
    }
  },
  "responses": {
    "Unauthorized": {
      "description": "Аутентификация не пройдена"
    },
    "InternalError": {
      "description": "Внутренняя ошибка"
    }
  },
  "parameters": {
    "IdTokenHeader": {
      "name": "Id-Token",
      "in": "header",
      "description": "Идентификационный токен пользователя",
      "required": true,
      "schema": {
        "type": "string",
        "format": "byte",
        "example": "SUQgVE9LRU4gRk9SIFRFU1RJTkc="
      }
    },
    "AuthorizationHeader": {
      "name": "Authorization",
      "in": "header",
      "description": "Токен доступа",
      "required": true,
      "schema": {
        "type": "string",
        "format": "byte",
        "example": "Bearer QXV0aG9yaXphdGlvbiBIZWFkZXIgRm9yIFRlc3Rpbmc="
      }
    }
  }
}