{
  "components": {
    "requestBodies": {
      "Convert": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "delimiter": {
                  "description": "CSV delimiter (default: comma)",
                  "maxLength": 1,
                  "type": "string"
                },
                "indent": {
                  "default": 2,
                  "type": "integer"
                },
                "infer_types": {
                  "default": true,
                  "description": "CSV → JSON only",
                  "type": "boolean"
                },
                "input": {
                  "type": "string"
                },
                "root_element": {
                  "default": "root",
                  "description": "JSON → XML only",
                  "type": "string"
                }
              },
              "required": [
                "input"
              ],
              "type": "object"
            }
          }
        },
        "required": true
      },
      "Text": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "text": {
                  "type": "string"
                }
              },
              "required": [
                "text"
              ],
              "type": "object"
            }
          }
        },
        "required": true
      }
    },
    "responses": {
      "Error": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Envelope"
            }
          }
        },
        "description": "Error envelope"
      },
      "Hash": {
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Envelope"
                },
                {
                  "properties": {
                    "data": {
                      "properties": {
                        "algorithm": {
                          "type": "string"
                        },
                        "hash": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              ]
            }
          }
        },
        "description": "Digest"
      },
      "Result": {
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Envelope"
                },
                {
                  "properties": {
                    "data": {
                      "properties": {
                        "result": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              ]
            }
          }
        },
        "description": "Success envelope with a `result` string"
      },
      "Success": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Envelope"
            }
          }
        },
        "description": "Success envelope"
      },
      "Validation": {
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Envelope"
                },
                {
                  "properties": {
                    "data": {
                      "properties": {
                        "formatted": {
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "empty",
                            "length",
                            "repeated",
                            "check_digit",
                            "characters"
                          ],
                          "type": "string"
                        },
                        "valid": {
                          "type": "boolean"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              ]
            }
          }
        },
        "description": "Validation result"
      }
    },
    "schemas": {
      "Envelope": {
        "properties": {
          "data": {
            "type": "object"
          },
          "error": {
            "properties": {
              "code": {
                "type": "string"
              },
              "field": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "ok": {
            "type": "boolean"
          }
        },
        "required": [
          "ok",
          "meta"
        ],
        "type": "object"
      },
      "Meta": {
        "properties": {
          "provider": {
            "example": "encfy-api",
            "type": "string"
          },
          "request_id": {
            "example": "req_0192d5c9c0a37b0a8f1b2c3d4e5f6a7b",
            "type": "string"
          },
          "version": {
            "example": "1",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyHeader": {
        "in": "header",
        "name": "X-API-Key",
        "type": "apiKey"
      },
      "ApiKeyQuery": {
        "in": "query",
        "name": "api_key",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "contact": {
      "email": "hi@encfy.com",
      "name": "Encfy",
      "url": "https://encfy.com"
    },
    "description": "REST API for encoding, hashing, generation, formatting, conversion, text\ntransformation and Brazilian validations (CPF, CNPJ, CEP, phone).\n\n**Authentication:** send your key in the `X-API-Key` header\n(`encfy_live_...` or `encfy_test_...`). `?api_key=` is accepted as a fallback\nfor tools that cannot set headers. Sandbox (`encfy_test_`) keys do not consume\nmonthly quota, but have a configurable hourly safety limit.\n\n**Envelope:** every response is `{ ok, data | error, meta }`.\nError codes: `INVALID_INPUT` (400), `VALIDATION_FAILED` (422), `UNAUTHORIZED` (401),\n`QUOTA_EXCEEDED` / `RATE_LIMITED` (429), `NOT_FOUND` (404), `UPSTREAM_ERROR` (502), `INTERNAL_ERROR` (500).\n\n**Rate limits:** free tier is 1,000 requests/month, 20/hour, 1 every 3 minutes.\nHeaders `X-RateLimit-*` report the current state on every authenticated response.\n",
    "summary": "Developer text tools with a Brazilian twist.",
    "termsOfService": "https://encfy.com/terms",
    "title": "Encfy API",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/auth/request": {
      "post": {
        "description": "Creates the account if needed and e-mails a single-use sign-in link (15 min TTL).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "email": {
                    "format": "email",
                    "type": "string"
                  }
                },
                "required": [
                  "email"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Request a magic link",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/verify": {
      "post": {
        "description": "Activates the account and returns a **live API key** (shown once) plus a dashboard session token.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "token": {
                    "format": "uuid",
                    "type": "string"
                  }
                },
                "required": [
                  "token"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "properties": {
                        "data": {
                          "properties": {
                            "api_key": {
                              "example": "encfy_live_5f1c...",
                              "type": "string"
                            },
                            "dashboard_url": {
                              "type": "string"
                            },
                            "key_prefix": {
                              "type": "string"
                            },
                            "session_token": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Verified"
          },
          "422": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Verify a magic link",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/br/generate/whatsapp-link": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "maxLength": 1000,
                    "type": "string"
                  },
                  "phone": {
                    "type": "string"
                  }
                },
                "required": [
                  "phone"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Generate a wa.me link",
        "tags": [
          "Brazil"
        ]
      }
    },
    "/v1/br/lookup/cep": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "cep": {
                    "example": "01001-000",
                    "type": "string"
                  }
                },
                "required": [
                  "cep"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "502": {
            "$ref": "#/components/responses/Error"
          }
        },
        "summary": "Lookup CEP (address)",
        "tags": [
          "Brazil"
        ]
      }
    },
    "/v1/br/validate/cnpj": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "cnpj": {
                    "example": "11.222.333/0001-81",
                    "type": "string"
                  }
                },
                "required": [
                  "cnpj"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Validation"
          }
        },
        "summary": "Validate CNPJ (numeric or alphanumeric)",
        "tags": [
          "Brazil"
        ]
      }
    },
    "/v1/br/validate/cpf": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "cpf": {
                    "example": "529.982.247-25",
                    "type": "string"
                  }
                },
                "required": [
                  "cpf"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Validation"
          }
        },
        "summary": "Validate CPF",
        "tags": [
          "Brazil"
        ]
      }
    },
    "/v1/br/validate/phone": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "phone": {
                    "example": "+55 11 91234-5678",
                    "type": "string"
                  }
                },
                "required": [
                  "phone"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Validate Brazilian phone (DDD, type, E.164)",
        "tags": [
          "Brazil"
        ]
      }
    },
    "/v1/color/convert": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "color": {
                    "example": "#2563eb",
                    "type": "string"
                  }
                },
                "required": [
                  "color"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Convert color (HEX / RGB / HSL)",
        "tags": [
          "Color"
        ]
      }
    },
    "/v1/convert/csv-to-json": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "CSV → JSON",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/convert/json-to-csv": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "JSON → CSV",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/convert/json-to-xml": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "JSON → XML",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/convert/json-to-yaml": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "JSON → YAML",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/convert/xml-to-json": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "XML → JSON",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/convert/yaml-to-json": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Convert"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "YAML → JSON",
        "tags": [
          "Convert"
        ]
      }
    },
    "/v1/decode/base64": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          },
          "422": {
            "$ref": "#/components/responses/Error"
          }
        },
        "summary": "Base64 decode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/decode/html-entities": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "HTML entities decode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/decode/url": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "space_as_plus": {
                    "default": false,
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "URL decode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/encode/base64": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "url_safe": {
                    "default": false,
                    "type": "boolean"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Base64 encode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/encode/html-entities": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "encode_non_ascii": {
                    "default": false,
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "HTML entities encode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/encode/url": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "mode": {
                    "default": "component",
                    "enum": [
                      "component",
                      "uri"
                    ],
                    "type": "string"
                  },
                  "space_as_plus": {
                    "default": false,
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "URL encode",
        "tags": [
          "Encoding"
        ]
      }
    },
    "/v1/format/json": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "indent": {
                    "default": 2,
                    "maximum": 8,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "json": {
                    "type": "string"
                  },
                  "sort_keys": {
                    "default": false,
                    "type": "boolean"
                  }
                },
                "required": [
                  "json"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          },
          "422": {
            "$ref": "#/components/responses/Error"
          }
        },
        "summary": "Beautify JSON",
        "tags": [
          "Format"
        ]
      }
    },
    "/v1/format/sql": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "indent": {
                    "default": 2,
                    "maximum": 8,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "keyword_case": {
                    "default": "upper",
                    "enum": [
                      "upper",
                      "lower"
                    ],
                    "type": "string"
                  },
                  "sql": {
                    "type": "string"
                  }
                },
                "required": [
                  "sql"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Format SQL",
        "tags": [
          "Format"
        ]
      }
    },
    "/v1/generate/password": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "default": 1,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "digits": {
                    "default": true,
                    "type": "boolean"
                  },
                  "exclude_ambiguous": {
                    "default": false,
                    "type": "boolean"
                  },
                  "length": {
                    "default": 20,
                    "maximum": 256,
                    "minimum": 4,
                    "type": "integer"
                  },
                  "lowercase": {
                    "default": true,
                    "type": "boolean"
                  },
                  "symbols": {
                    "default": true,
                    "type": "boolean"
                  },
                  "uppercase": {
                    "default": true,
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Generate passwords",
        "tags": [
          "Generate"
        ]
      }
    },
    "/v1/generate/qrcode": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "content": {
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "error_correction": {
                    "default": "M",
                    "enum": [
                      "L",
                      "M",
                      "Q",
                      "H"
                    ],
                    "type": "string"
                  },
                  "format": {
                    "default": "svg",
                    "enum": [
                      "svg",
                      "png"
                    ],
                    "type": "string"
                  },
                  "size": {
                    "default": 256,
                    "maximum": 1024,
                    "minimum": 64,
                    "type": "integer"
                  }
                },
                "required": [
                  "content"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Generate a QR Code (SVG or PNG base64)",
        "tags": [
          "Generate"
        ]
      }
    },
    "/v1/generate/token": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "bytes": {
                    "default": 32,
                    "maximum": 128,
                    "minimum": 8,
                    "type": "integer"
                  },
                  "encoding": {
                    "default": "hex",
                    "enum": [
                      "hex",
                      "base64url",
                      "alphanumeric"
                    ],
                    "type": "string"
                  },
                  "prefix": {
                    "maxLength": 16,
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Generate a secure random token",
        "tags": [
          "Generate"
        ]
      }
    },
    "/v1/generate/uuid": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "default": 1,
                    "maximum": 1000,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "version": {
                    "default": 4,
                    "enum": [
                      4,
                      7
                    ],
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Generate UUIDs (v4 or v7)",
        "tags": [
          "Generate"
        ]
      }
    },
    "/v1/hash/hmac": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "algorithm": {
                    "default": "sha256",
                    "enum": [
                      "sha256",
                      "sha512",
                      "sha1",
                      "md5"
                    ],
                    "type": "string"
                  },
                  "encoding": {
                    "default": "hex",
                    "enum": [
                      "hex",
                      "base64",
                      "base64url"
                    ],
                    "type": "string"
                  },
                  "secret": {
                    "type": "string"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text",
                  "secret"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "HMAC",
        "tags": [
          "Hashing"
        ]
      }
    },
    "/v1/hash/md5": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Hash"
          }
        },
        "summary": "MD5",
        "tags": [
          "Hashing"
        ]
      }
    },
    "/v1/hash/sha1": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Hash"
          }
        },
        "summary": "SHA-1",
        "tags": [
          "Hashing"
        ]
      }
    },
    "/v1/hash/sha256": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Hash"
          }
        },
        "summary": "SHA-256",
        "tags": [
          "Hashing"
        ]
      }
    },
    "/v1/hash/sha512": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Hash"
          }
        },
        "summary": "SHA-512",
        "tags": [
          "Hashing"
        ]
      }
    },
    "/v1/health": {
      "get": {
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "security": [],
        "summary": "Health check",
        "tags": [
          "Utilities"
        ]
      }
    },
    "/v1/me": {
      "get": {
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          }
        },
        "summary": "Current key, tier and quota",
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/me/keys": {
      "get": {
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "List API keys",
        "tags": [
          "Account"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "env": {
                    "default": "live",
                    "enum": [
                      "live",
                      "test"
                    ],
                    "type": "string"
                  },
                  "name": {
                    "maxLength": 64,
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Create an API key",
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/me/keys/{id}": {
      "delete": {
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          }
        },
        "summary": "Revoke an API key",
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/minify/json": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "json": {
                    "type": "string"
                  },
                  "sort_keys": {
                    "default": false,
                    "type": "boolean"
                  }
                },
                "required": [
                  "json"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Minify JSON",
        "tags": [
          "Format"
        ]
      }
    },
    "/v1/text/case": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "mode": {
                    "enum": [
                      "upper",
                      "lower",
                      "title",
                      "sentence",
                      "camel",
                      "pascal",
                      "snake",
                      "kebab",
                      "constant",
                      "alternating",
                      "inverse"
                    ],
                    "type": "string"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text",
                  "mode"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Change case",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/text/count": {
      "post": {
        "requestBody": {
          "$ref": "#/components/requestBodies/Text"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Count characters, words, lines",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/text/dedup": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "case_insensitive": {
                    "default": false,
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Remove duplicate lines",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/text/slugify": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "lowercase": {
                    "default": true,
                    "type": "boolean"
                  },
                  "max_length": {
                    "type": "integer"
                  },
                  "separator": {
                    "default": "-",
                    "type": "string"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Slugify",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/text/sort": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "case_insensitive": {
                    "default": true,
                    "type": "boolean"
                  },
                  "order": {
                    "default": "asc",
                    "enum": [
                      "asc",
                      "desc"
                    ],
                    "type": "string"
                  },
                  "remove_empty": {
                    "default": true,
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Sort lines",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/text/strip-html": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "html": {
                    "type": "string"
                  }
                },
                "required": [
                  "html"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Result"
          }
        },
        "summary": "Strip HTML",
        "tags": [
          "Text"
        ]
      }
    },
    "/v1/time/minutes-to-hours": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "minutes": {
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [
                  "minutes"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Minutes → hours",
        "tags": [
          "Time"
        ]
      }
    },
    "/v1/time/timestamp": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "timezone": {
                    "example": "America/Sao_Paulo",
                    "type": "string"
                  },
                  "value": {
                    "description": "Unix seconds/milliseconds or a date string.",
                    "oneOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "value"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          }
        },
        "summary": "Unix timestamp ↔ date",
        "tags": [
          "Time"
        ]
      }
    }
  },
  "security": [
    {
      "ApiKeyHeader": []
    },
    {
      "ApiKeyQuery": []
    }
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.encfy.com"
    }
  ],
  "tags": [
    {
      "name": "Auth"
    },
    {
      "name": "Account"
    },
    {
      "name": "Encoding"
    },
    {
      "name": "Hashing"
    },
    {
      "name": "Generate"
    },
    {
      "name": "Format"
    },
    {
      "name": "Convert"
    },
    {
      "name": "Text"
    },
    {
      "name": "Brazil"
    },
    {
      "name": "Time"
    },
    {
      "name": "Color"
    },
    {
      "name": "Utilities"
    }
  ]
}