{"openapi":"3.1.0","info":{"title":"Postor Abierto","version":"1.1.0","description":"Datos públicos de contrataciones del gobierno federal mexicano. Sin autenticación, sin límite de uso razonable, con atribución. Antes se llamaba LicitIA Abierto.","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"servers":[{"url":"/api/open/v1"}],"paths":{"/estatales":{"get":{"summary":"Buscar licitaciones estatales, por página","parameters":[{"name":"state","in":"query","schema":{"type":"integer","minimum":1,"maximum":32}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":1900,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"stateId":{"type":"integer"},"html_url":{"type":"string","format":"uri"},"collection":{"const":"estatales"},"title":{"type":"string"},"procedureNumber":{"type":["string","null"]},"sourceUrl":{"type":"string","format":"uri"},"status":{"enum":["vigente","seguimiento","concluido"]},"statusBasis":{"type":"string"},"buyerName":{"type":"string"},"buyerCode":{"type":["string","null"]},"sourceYear":{"type":["integer","null"]},"governmentLevel":{"enum":["state","municipal","unknown"]},"sourceTimeZone":{"type":"string"},"description":{"type":["string","null"]},"method":{"type":["string","null"]},"procurementType":{"type":["string","null"]},"sourceStatus":{"type":["string","null"]},"amount":{"type":["string","null"],"description":"Decimal de la fuente, sin estimaciones"},"currency":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"openingAt":{"type":["string","null"],"format":"date-time"},"clarificationAt":{"type":["string","null"],"format":"date-time"},"scheduledAwardAt":{"type":["string","null"],"format":"date-time","description":"Fallo programado, no confirma adjudicación"},"documentsComplete":{"type":"boolean","description":"Resultado de ingestión, no certificación de expediente completo"},"changedAt":{"type":"string","format":"date-time"},"lastSeenAt":{"type":"string","format":"date-time"}},"required":["id","stateId","html_url","title","status","statusBasis"]}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"const":30}},"required":["data","total","page","pageSize"]}}}},"422":{"description":"Parámetros no válidos"}}}},"/estatales/{id}":{"get":{"summary":"Detalle estatal por UUID estable","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"stateId":{"type":"integer"},"html_url":{"type":"string","format":"uri"},"collection":{"const":"estatales"},"title":{"type":"string"},"procedureNumber":{"type":["string","null"]},"sourceUrl":{"type":"string","format":"uri"},"status":{"enum":["vigente","seguimiento","concluido"]},"statusBasis":{"type":"string"},"buyerName":{"type":"string"},"buyerCode":{"type":["string","null"]},"sourceYear":{"type":["integer","null"]},"governmentLevel":{"enum":["state","municipal","unknown"]},"sourceTimeZone":{"type":"string"},"description":{"type":["string","null"]},"method":{"type":["string","null"]},"procurementType":{"type":["string","null"]},"sourceStatus":{"type":["string","null"]},"amount":{"type":["string","null"],"description":"Decimal de la fuente, sin estimaciones"},"currency":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"openingAt":{"type":["string","null"],"format":"date-time"},"clarificationAt":{"type":["string","null"],"format":"date-time"},"scheduledAwardAt":{"type":["string","null"],"format":"date-time","description":"Fallo programado, no confirma adjudicación"},"documentsComplete":{"type":"boolean","description":"Resultado de ingestión, no certificación de expediente completo"},"changedAt":{"type":"string","format":"date-time"},"lastSeenAt":{"type":"string","format":"date-time"}},"required":["id","stateId","html_url","title","status","statusBasis"]}},"required":["success","data"]}}}},"404":{"description":"No publicado o no existe"}}}},"/estatales/por-numero/{numero}":{"get":{"summary":"Resolver una URL heredada por folio exacto y único; preferir primero el detalle federal","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":120}}],"responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"stateId":{"type":"integer"},"html_url":{"type":"string","format":"uri"}},"required":["id","stateId","html_url"]}},"required":["success","data"]}}}},"404":{"description":"No publicado, inexistente o folio ambiguo"},"410":{"description":"Recurso retirado por una solicitud aplicada"}}}},"/estatales/cobertura":{"get":{"summary":"Entidades publicadas y cobertura temporal","responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"array","items":{"type":"object"}}},"required":["success","data"]}}}}}}},"/estatales/fuentes":{"get":{"summary":"Lecturas de procedimientos por rango, último intento y disponibilidad de anexos","responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"state_id":{"type":"integer"},"last_complete_scan":{"type":["string","null"],"format":"date-time","description":"Último lote archivado sin errores; su periodo no acredita una revisión de todo el catálogo."},"last_complete_scan_from":{"type":["string","null"],"format":"date"},"last_complete_scan_to":{"type":["string","null"],"format":"date"},"last_attempt":{"type":["string","null"],"format":"date-time","description":"Último intento finalizado, incluso documentos, muestras y fallas; no acredita actualidad."},"last_metadata_scan":{"type":["object","null"],"description":"Lectura de procedimientos en el intervalo explícito; la fecha de revisión sola no acredita actualidad.","properties":{"checked_at":{"type":"string","format":"date-time"},"from":{"type":["string","null"],"format":"date"},"to":{"type":["string","null"],"format":"date"},"status":{"enum":["complete","partial","sample","unknown"]},"source_incomplete":{"type":"boolean"},"discovered":{"type":["integer","null"],"minimum":0},"processed":{"type":["integer","null"],"minimum":0},"published":{"type":["integer","null"],"minimum":0},"excluded":{"type":["integer","null"],"minimum":0},"failed":{"type":["integer","null"],"minimum":0}}},"latest_metadata_attempt":{"type":["object","null"],"description":"Lectura de procedimientos en el intervalo explícito; la fecha de revisión sola no acredita actualidad.","properties":{"checked_at":{"type":"string","format":"date-time"},"from":{"type":["string","null"],"format":"date"},"to":{"type":["string","null"],"format":"date"},"status":{"enum":["complete","partial","sample","unknown"]},"source_incomplete":{"type":"boolean"},"discovered":{"type":["integer","null"],"minimum":0},"processed":{"type":["integer","null"],"minimum":0},"published":{"type":["integer","null"],"minimum":0},"excluded":{"type":["integer","null"],"minimum":0},"failed":{"type":["integer","null"],"minimum":0}}},"last_current_metadata_scan":{"type":["object","null"],"description":"Lectura de procedimientos en el intervalo explícito; la fecha de revisión sola no acredita actualidad.","properties":{"checked_at":{"type":"string","format":"date-time"},"from":{"type":["string","null"],"format":"date"},"to":{"type":["string","null"],"format":"date"},"status":{"enum":["complete","partial","sample","unknown"]},"source_incomplete":{"type":"boolean"},"discovered":{"type":["integer","null"],"minimum":0},"processed":{"type":["integer","null"],"minimum":0},"published":{"type":["integer","null"],"minimum":0},"excluded":{"type":["integer","null"],"minimum":0},"failed":{"type":["integer","null"],"minimum":0}}},"latest_current_metadata_attempt":{"type":["object","null"],"description":"Lectura de procedimientos en el intervalo explícito; la fecha de revisión sola no acredita actualidad.","properties":{"checked_at":{"type":"string","format":"date-time"},"from":{"type":["string","null"],"format":"date"},"to":{"type":["string","null"],"format":"date"},"status":{"enum":["complete","partial","sample","unknown"]},"source_incomplete":{"type":"boolean"},"discovered":{"type":["integer","null"],"minimum":0},"processed":{"type":["integer","null"],"minimum":0},"published":{"type":["integer","null"],"minimum":0},"excluded":{"type":["integer","null"],"minimum":0},"failed":{"type":["integer","null"],"minimum":0}}},"procedures_total":{"type":"integer","minimum":0},"documents":{"type":"object","description":"Anexos actuales de procedimientos publicados.","properties":{"total":{"type":"integer","minimum":0},"downloaded":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"pending":{"type":"integer","minimum":0}}}},"required":["code","display_name","enabled","state_id","last_metadata_scan","latest_metadata_attempt","procedures_total","documents"]}}},"required":["success","data"]}}}}}}},"/estatales/facetas":{"get":{"summary":"Valores de filtros y conteos","parameters":[{"name":"state","in":"query","schema":{"type":"integer","minimum":1,"maximum":32}}],"responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object"}},"required":["success","data"]}}}}}}},"/estatales/cambios":{"get":{"summary":"Altas, modificaciones y retiradas por secuencia","parameters":[{"name":"cursor","in":"query","schema":{"type":"string","pattern":"^[0-9]{1,18}$","default":"0"}}],"responses":{"200":{"description":"Respuesta pública","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"action":{"enum":["upsert","withdrawal"]},"id":{"type":"string","format":"uuid"},"cursor":{"type":"string"},"html_url":{"type":"string","format":"uri"}}}},"next_cursor":{"type":"string"},"has_more":{"type":"boolean"}}}}}}}}},"/estatales/export.ndjson":{"get":{"summary":"Metadatos estatales en NDJSON, 30 por página; seguir Link rel=next","parameters":[{"name":"state","in":"query","schema":{"type":"integer","minimum":1,"maximum":32}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":1900,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Líneas JSON","content":{"application/x-ndjson":{"schema":{"type":"string"}}}}}}},"/proveedores/buscar":{"get":{"operationId":"buscarProveedores","summary":"Búsqueda acotada de proveedores por nombre; precisa q si hay más resultados","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"description":"Máximo de resultados; si se omite se devuelven hasta 20."}}],"responses":{"200":{"description":"Resultado público, cobertura y enlaces para citar; data contiene el mismo resultado que la herramienta MCP.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"resultados":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"nombre":{"type":"string"},"contratos":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"monto_adjudicado_mxn":{"anyOf":[{"type":"string"},{"type":"null"}]},"fuente":{"type":"string","format":"uri"},"licitia_url":{"type":"string","format":"uri"}},"required":["slug","nombre","contratos","monto_adjudicado_mxn","fuente","licitia_url"],"additionalProperties":false}},"hay_mas":{"type":"boolean"},"siguiente_cursor":{"type":"null"},"cobertura":{"type":"object","properties":{"coleccion":{"type":"string","const":"comprasmx"},"alcance":{"type":"string"},"fuente_primaria":{"type":"string","const":"ComprasMX"}},"required":["coleccion","alcance","fuente_primaria"],"additionalProperties":false},"paginacion":{"type":"object","properties":{"modo":{"type":"string","const":"busqueda_acotada"},"devueltos":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"null"}},"required":["modo","devueltos","total"],"additionalProperties":false},"nota":{"type":"string"}},"required":["resultados","hay_mas","siguiente_cursor","cobertura","paginacion","nota"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"304":{"description":"Sin cambios respecto a If-None-Match; respuesta sin cuerpo."},"400":{"description":"Parámetros inválidos; no se ignoran filtros desconocidos."},"429":{"description":"Límite de consultas alcanzado; respeta Retry-After."}}}},"/proveedores/{slug}/adjudicaciones":{"get":{"operationId":"listarAdjudicacionesProveedor","summary":"Adjudicaciones publicadas de un proveedor, paginadas por cursor","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[a-z0-9][a-z0-9-]*$"}},{"name":"anio","in":"query","required":false,"schema":{"type":"integer","minimum":1900,"maximum":2200}},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"description":"Máximo de resultados; si se omite se devuelven hasta 20."}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2000,"description":"Copia siguiente_cursor de la respuesta anterior y conserva los mismos filtros. Omítelo en la primera consulta."}}],"responses":{"200":{"description":"Resultado público, cobertura y enlaces para citar; data contiene el mismo resultado que la herramienta MCP.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"anyOf":[{"type":"object","properties":{"encontrado":{"type":"boolean","const":true},"resultados":{"type":"array","items":{"type":"object","properties":{"adjudicacion":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"internal_reference":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"contractor":{"type":"object","properties":{"name":{"type":"string"},"normalized_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"rfc_type":{"anyOf":[{"type":"string","enum":["moral","fisica"]},{"type":"null"}]},"slug":{"type":"string"}},"required":["name","normalized_name","rfc_type"],"additionalProperties":false},"contract_period":{"type":"object","properties":{"published_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"starts_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ends_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["published_at","starts_at","ends_at"],"additionalProperties":false},"value":{"type":"object","properties":{"subtotal":{"anyOf":[{"type":"string"},{"type":"null"}]},"tax":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"anyOf":[{"type":"string"},{"type":"null"}]},"maximum_subtotal":{"anyOf":[{"type":"string"},{"type":"null"}]},"maximum_total":{"anyOf":[{"type":"string"},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["subtotal","tax","total","maximum_subtotal","maximum_total","currency"],"additionalProperties":false},"open_contract_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantity":{"anyOf":[{"type":"string"},{"type":"null"}]},"exercised_quantity":{"anyOf":[{"type":"string"},{"type":"null"}]},"participants":{"type":"array","items":{"type":"object","properties":{"number":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"rfc_type":{"anyOf":[{"type":"string","enum":["moral","fisica"]},{"type":"null"}]},"slug":{"type":"string"}},"required":["number","name","rfc_type"],"additionalProperties":false}},"line_items":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string"},"cucop_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]},"requested_quantity":{"anyOf":[{"type":"string"},{"type":"null"}]},"awarded_quantity":{"anyOf":[{"type":"string"},{"type":"null"}]},"unit_price":{"anyOf":[{"type":"string"},{"type":"null"}]},"subtotal":{"anyOf":[{"type":"string"},{"type":"null"}]},"tax":{"anyOf":[{"type":"string"},{"type":"null"}]},"other_taxes":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"anyOf":[{"type":"string"},{"type":"null"}]},"cucop_description":{"type":"string"},"partida_code":{"type":"string"},"partida_description":{"type":"string"}},"required":["number","cucop_code","description","unit","requested_quantity","awarded_quantity","unit_price","subtotal","tax","other_taxes","total"],"additionalProperties":false}}},"required":["id","internal_reference","title","status","contractor","contract_period","value","open_contract_type","quantity","exercised_quantity","participants","line_items"],"additionalProperties":false},"procedimiento":{"type":"object","properties":{"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"titulo":{"anyOf":[{"type":"string"},{"type":"null"}]},"fuente":{"type":"string","format":"uri"},"licitia_url":{"type":"string","format":"uri"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["numero","titulo","fuente","licitia_url","source_id","source_url"],"additionalProperties":false}},"required":["adjudicacion","procedimiento"],"additionalProperties":false}},"siguiente_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hay_mas":{"type":"boolean"},"paginacion":{"type":"object","properties":{"unidad":{"type":"string","const":"adjudicaciones"},"devueltos":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"null"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"has_more":{"type":"boolean"}},"required":["unidad","devueltos","total","next_cursor","has_more"],"additionalProperties":false},"cobertura":{"type":"object","properties":{"coleccion":{"type":"string","const":"comprasmx"},"alcance":{"type":"string"},"fuente_primaria":{"type":"string","const":"ComprasMX"},"anio":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"criterio":{"type":"array","prefixItems":[{"type":"string","const":"ADJUDICADO"},{"type":"string","const":"ADJUDICADO PARCIAL"}]}},"required":["coleccion","alcance","fuente_primaria","anio","criterio"],"additionalProperties":false},"fuente":{"type":"string","format":"uri"},"licitia_url":{"type":"string","format":"uri"},"actualizado_al":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"nota":{"type":"string"}},"required":["encontrado","resultados","siguiente_cursor","hay_mas","paginacion","cobertura","fuente","licitia_url","nota"],"additionalProperties":false},{"type":"object","properties":{"encontrado":{"type":"boolean","const":false},"slug":{"type":"string"}},"required":["encontrado","slug"],"additionalProperties":false}]}},"required":["success","data"],"additionalProperties":false}}}},"304":{"description":"Sin cambios respecto a If-None-Match; respuesta sin cuerpo."},"400":{"description":"Parámetros inválidos; no se ignoran filtros desconocidos."},"410":{"description":"El recurso fue retirado de la superficie pública."},"429":{"description":"Límite de consultas alcanzado; respeta Retry-After."}}}},"/estadisticas":{"get":{"operationId":"estadisticasContratacion","summary":"Agregados públicos por dimensión general, año o estado; clave requerida excepto en general","parameters":[{"name":"dimension","in":"query","required":true,"schema":{"type":"string","enum":["general","anio","estado"],"description":"general devuelve los agregados públicos; anio y estado seleccionan una dimensión con clave obligatoria."}},{"name":"clave","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{1,4}$","description":"Omite clave para general. Para anio usa un año de cuatro dígitos (1900–2200), por ejemplo \"2025\". Para estado usa el ID Postor/ComprasMX (1–32), por ejemplo \"7\" para Ciudad de México; no es INEGI."}}],"responses":{"200":{"description":"Resultado público, cobertura y enlaces para citar; data contiene el mismo resultado que la herramienta MCP.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"encontrado":{"type":"boolean"},"datos":{"type":"object","properties":{"agregados":{"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string"},"clave":{"type":"string"},"etiqueta":{"type":"string"},"procedimientos":{"type":"integer","minimum":0,"maximum":9007199254740991},"monto_adjudicado_mxn":{"type":"string"}},"required":["dimension","clave","etiqueta","procedimientos","monto_adjudicado_mxn"],"additionalProperties":false}},"desglose":{"anyOf":[{"type":"object","properties":{"tipo":{"type":"string","enum":["estado","anio"]},"clave":{"type":"string"},"porTipo":{"type":"array","items":{"type":"object","properties":{"clave":{"type":"string"},"n":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["clave","n"],"additionalProperties":false}},"porEstatus":{"type":"array","items":{"type":"object","properties":{"clave":{"type":"string"},"n":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["clave","n"],"additionalProperties":false}},"dependencias":{"type":"array","items":{"type":"object","properties":{"clave":{"type":"string"},"n":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["clave","n"],"additionalProperties":false}},"distinctDependencias":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tipo","clave","porTipo","porEstatus","dependencias","distinctDependencias"],"additionalProperties":false},{"type":"null"}]}},"required":["agregados","desglose"],"additionalProperties":false},"cobertura":{"type":"object","properties":{"coleccion":{"type":"string","const":"comprasmx"},"alcance":{"type":"string"},"fuente_primaria":{"type":"string","const":"ComprasMX"},"dimension":{"type":"string","enum":["general","anio","estado"]},"clave":{"anyOf":[{"type":"string"},{"type":"null"}]},"unidad_conteo":{"type":"string","const":"procedimientos"},"moneda":{"type":"string","const":"MXN"},"reglas_importe":{"type":"string"},"nota":{"type":"string"}},"required":["coleccion","alcance","fuente_primaria","dimension","clave","unidad_conteo","moneda","reglas_importe","nota"],"additionalProperties":false},"fuente":{"type":"string","format":"uri"},"licitia_url":{"type":"string","format":"uri"}},"required":["encontrado","datos","cobertura","fuente","licitia_url"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"304":{"description":"Sin cambios respecto a If-None-Match; respuesta sin cuerpo."},"400":{"description":"Parámetros inválidos; no se ignoran filtros desconocidos."},"429":{"description":"Límite de consultas alcanzado; respeta Retry-After."}}}},"/licitaciones/{numero}":{"get":{"summary":"Un procedimiento por su número","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"},"example":"aa-50-gyr-050gyr028-n-114-2024"}],"responses":{"200":{"description":"Procedimiento"},"404":{"description":"No existe"}}}},"/licitaciones":{"get":{"summary":"Búsqueda paginada por cursor","parameters":[{"name":"q","in":"query","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"section","in":"query","schema":{"enum":["vigente","seguimiento","concluido"]}},{"name":"siglas","in":"query","schema":{"type":"string"}},{"name":"anio","in":"query","schema":{"type":"integer"}},{"name":"state_id","in":"query","schema":{"type":"integer","minimum":1,"maximum":32}},{"name":"estatus","in":"query","schema":{"type":"string"}},{"name":"tipo","in":"query","schema":{"type":"string"}},{"name":"cucop","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"Página de procedimientos"}}}},"/licitaciones/cambios":{"get":{"summary":"Procedimientos cuyo contenido cambió desde una fecha","parameters":[{"name":"desde","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Cambios"}}}},"/proveedores/{slug}":{"get":{"summary":"Perfil de un proveedor"}},"/proveedores/{slug}/procedimientos":{"get":{"summary":"Historial completo del proveedor, paginado por cursor"}},"/compradores/{slug}":{"get":{"summary":"Perfil de una dependencia"}},"/compradores/{slug}/procedimientos":{"get":{"summary":"Historial completo de la dependencia, paginado por cursor"}},"/unidades/{slug}":{"get":{"summary":"Perfil de una unidad compradora"}},"/unidades/{slug}/procedimientos":{"get":{"summary":"Historial completo de la unidad, paginado por cursor"}},"/partidas":{"get":{"summary":"Las 271 partidas específicas CUCOP con historial y procedimientos abiertos"}},"/partidas/{clave}":{"get":{"summary":"Una partida: compradores, proveedores, precios y lo abierto ahora"}},"/partidas/{clave}/procedimientos":{"get":{"summary":"Procedimientos con partidas de esta partida, paginados por cursor"}},"/categorias/{clave}":{"get":{"summary":"Precios unitarios por clave CUCOP"}},"/categorias/{clave}/procedimientos":{"get":{"summary":"Procedimientos relacionados con la clave CUCOP, paginados por cursor"}},"/categorias/{clave}/precios":{"get":{"summary":"Percentiles de precio unitario con filtros de ejercicio, comprador, estado y unidad, tamaño de muestra y método"}},"/categorias/{clave}/precios.csv":{"get":{"summary":"Las observaciones detrás de los percentiles, hasta 5,000 filas"}},"/buscar":{"get":{"summary":"Búsqueda transversal de procedimientos y entidades"}},"/{directorio}/indice":{"get":{"summary":"Grupos del índice alfabético de un directorio, con conteos y páginas"}},"/{directorio}/indice/{grupo}":{"get":{"summary":"Una página numerada del índice alfabético (200 entidades, orden por clave)"}},"/vigentes":{"get":{"summary":"Procedimientos abiertos ahora, los que cierran primero al frente; filtros por comprador, estado y partida"}},"/vigentes/resumen":{"get":{"summary":"Totales de vigentes y conteos por dependencia, estado y partida"}},"/hubs":{"get":{"summary":"Conteos por estado, año, ramo, tipo y estatus"}},"/sitemap":{"get":{"summary":"Índice de fragmentos del sitemap"}},"/sitemap/recientes":{"get":{"summary":"Vigentes y altas de la última semana, para el sitemap fresco"}},"/instituciones/cobertura":{"get":{"summary":"Los conteos y publishedFrom/publishedThrough describen únicamente registros publicados. Los años presentes no certifican cobertura histórica completa. checkedAt es la última observación de un registro, no la fecha de sincronización de toda la fuente. Fechas programadas no acreditan adjudicaciones; no se infieren ganadores ni importes.","responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/instituciones/sitemap":{"get":{"summary":"Fragmentos de UUID publicados; no certifica cobertura ni fechas de modificación","responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/instituciones/cfe":{"get":{"summary":"Procedimientos publicados de CFE","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":2023,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"cfe"},"html_url":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"}}}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"const":30}}}}}}}}},"/instituciones/cfe/{id}":{"get":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"cfe"},"html_url":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"}}}}}}}},"404":{"description":"No publicado o inexistente"}}}},"/instituciones/cfe/facetas":{"get":{"summary":"Años, convocantes y tipos exactos con conteos publicados","responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/instituciones/sitemap/cfe/{bucket}":{"get":{"parameters":[{"name":"bucket","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{2}$"}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"hub":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"cfe"}}}}}}}}}}}},"/instituciones/cfe/export.ndjson":{"get":{"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":2023,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Una página de metadatos públicos. Link rel=next continúa los mismos filtros; no es una instantánea.","content":{"application/x-ndjson":{"schema":{"type":"string"}}}}}}},"/instituciones/pemex":{"get":{"summary":"Procedimientos publicados de PEMEX","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":2023,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"pemex"},"html_url":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"}}}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"const":30}}}}}}}}},"/instituciones/pemex/{id}":{"get":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"pemex"},"html_url":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"}}}}}}}},"404":{"description":"No publicado o inexistente"}}}},"/instituciones/pemex/facetas":{"get":{"summary":"Años, convocantes y tipos exactos con conteos publicados","responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/instituciones/sitemap/pemex/{bucket}":{"get":{"parameters":[{"name":"bucket","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{2}$"}}],"responses":{"200":{"description":"Datos publicados; una fuente retenida no devuelve registros.","content":{"application/json":{"schema":{"type":"object","properties":{"hub":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"institution":{"const":"pemex"}}}}}}}}}}}},"/instituciones/pemex/export.ndjson":{"get":{"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":150}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"status","in":"query","schema":{"type":"string","enum":["vigente","seguimiento","concluido"]}},{"name":"year","in":"query","schema":{"type":"integer","minimum":2023,"maximum":2200}},{"name":"buyer","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"type","in":"query","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Una página de metadatos públicos. Link rel=next continúa los mismos filtros; no es una instantánea.","content":{"application/x-ndjson":{"schema":{"type":"string"}}}}}}}}}