Contrato OpenAPI
Gere um cliente tipado na sua linguagem a partir do documento OpenAPI e valide os pedidos com ele.
O AVS, AutoUncle Vehicle Schema, é um JSON Schema aberto e versionado para descrever um carro: o que é, como é construído e com que está equipado. Use-o nos seus próprios sistemas, valide-o em sete linguagens e construa sobre uma API que fala o mesmo modelo de identidade.
O AVS tem dois tipos de documento: um documento de tipo descreve um carro tal como é construído, por exemplo um BMW 320e G20 berlina com M Sport; um documento de veículo descreve um carro físico concreto desse tipo, com o VIN, o conta-quilómetros, a cor e o histórico. Licenciado sob Apache-2.0, sem dados do catálogo.
O AVS diz o que o carro é. Quanto vale e onde está à venda pertence a outro lugar.
Só a marca e o modelo são obrigatórios. Nada é adivinhado, e a ausência tem de ser declarada.
Cada registo do catálogo lista os seus IDs em qualquer esquema, como AutoUncle, Wikidata ou KBA HSN/TSN, e nenhum é privilegiado.
As unidades fazem parte dos nomes dos campos, os valores seguem o Certificado de Conformidade da UE e o WLTP, e países, moedas e VIN usam códigos ISO.
{
"avs": { "version": "0.3", "kind": "type" },
"identity": {
"brand": {
"name": "BMW",
"ids": [
{ "scheme": "autouncle", "value": "b-example0001" },
{ "scheme": "wikidata", "value": "Q26678" }
]
},
"model": {
"name": "3 Series",
"localNames": { "DK": "3-serie" }
},
"generation": { "name": "3 Series (G20/G21)", "code": "G20" },
"drivetrain": {
"name": "320e (204 Hp) Plug-in Hybrid Steptronic"
}
},
"specification": {
"powertrain": {
"energy": ["petrol", "electricity"],
"electrification": "phev",
"powerKw": 150, "torqueNm": 300
}
},
"equipment": {
"trim": {
"name": "M Sport",
"variations": ["M Sportpakke", "M-Sport"]
}
}
}
Marca, modelo, geração e fase; depois carroçaria e motorização como factos independentes, e a versão, os pacotes e as opções pelo nome. As nossas APIs identificam os carros pelo mesmo caminho, da marca e do modelo à geração, à motorização e à versão, com IDs estáveis que pode guardar no AVS sob o esquema autouncle.
Cada pacote inclui o esquema e um validador que devolve cada erro com um JSON Pointer para a sua localização. São gerados a partir do esquema, nunca escritos à mão, e a sua versão é sempre igual à do esquema.
| Linguagem | Pacote | Validar |
|---|---|---|
| Ruby | autouncle-avs | AVS.validate(doc) |
| TypeScript / JavaScript | @autouncle/avs | validate(doc) |
| Python | autouncle-avs | avs.validate(doc) |
| Go | github.com/AutoUncle/avs/packages/go | avs.Validate(b) |
| Java / JVM | com.autouncle:avs | Avs.validate(json) |
| .NET | AutoUncle.Avs | AvsSchema.Validate(json) |
| PHP | autouncle/avs | Avs::validate($doc) |
Gere um cliente tipado na sua linguagem a partir do documento OpenAPI e valide os pedidos com ele.
Os erros são documentos de problema segundo o RFC 9457, com um código estável, uma referência ao campo e uma correção sugerida.
Países ISO 3166, moedas ISO 4217 e VIN ISO 3779, nos pedidos e nos resultados.
Cada avaliação aceita uma chave de idempotência, para que um pedido repetido nunca seja cobrado duas vezes.
A mesma API como ferramentas para agentes de IA, além de uma skill de integração e de llms.txt para assistentes de programação.
Leia o esquema, gere um cliente a partir do contrato OpenAPI e avalie o seu primeiro carro com uma chave de teste gratuita.